当前位置: 首页 > 知识库问答 >
问题:

阵列,双打,IF/其他

狄峻熙
2023-03-14

我假设用一个数字数组而不是字符串来编写代码,它们必须是双精度的。我写代码的方式,我知道的唯一方式,是有效的。也许我把它弄得太复杂了,一个数组会让它变得简单。我是编程新手,几天之内就开始了。请帮忙。

所需要的是:编写一个代码,将平均10个数字的输入,并显示平均值以及它们是否通过或失败。如果

我们必须使用数组,我们需要使用JOptionPane。showMessageDialog。,数字必须是两倍,并四舍五入到两位小数。

我声明了double,但如果我输入一个十进制数,就会出错。如果我只是按原样运行代码,它会让我输入10个数字,平均值,然后告诉我通过还是失败。说到使用其他因素,我就不知所措了。谢谢

工作代码如下:

package avgpassorfail;


import javax.swing.JOptionPane;

public class Avgpassorfail {

public static void main(String[] args) {

   String firstNumber, 
     secondNumber, 
     thirdNumber,
     fourthNumber,
     fifthNumber,
     sixthNumber,
     seventhNumber,
     eighthNumber,
     ninethNumber,
     tenthNumber;

double number1,     
number2,
number3,
number4,
number5,
number6,
number7,
number8,
number9,
number10,
sum;                

    firstNumber =
    JOptionPane.showInputDialog ( "Enter 1st Grade" );

    secondNumber =
    JOptionPane.showInputDialog ( "Enter 2nd Grade" );

    thirdNumber =
    JOptionPane.showInputDialog ( "Enter 3rd Grade" );

    fourthNumber =
    JOptionPane.showInputDialog ( "Enter 4th Grade" );

    fifthNumber =
    JOptionPane.showInputDialog ( "Enter 5th Grade" );

    sixthNumber =
    JOptionPane.showInputDialog ( "Enter 6th Grade" );

    seventhNumber =
    JOptionPane.showInputDialog ( "Enter 7th Grade" );

    eighthNumber =
    JOptionPane.showInputDialog ( "Enter 8th Grade" );

     ninethNumber =
     JOptionPane.showInputDialog ( "Enter 9th Grade" );

     tenthNumber =
     JOptionPane.showInputDialog ( "Enter 10th Grade" );


number1 = Integer.parseInt ( firstNumber);
number2 = Integer.parseInt ( secondNumber);
number3 = Integer.parseInt ( thirdNumber);
number4 = Integer.parseInt ( fourthNumber);
number5 = Integer.parseInt ( fifthNumber);
number6 = Integer.parseInt ( sixthNumber);
number7 = Integer.parseInt ( seventhNumber);
number8 = Integer.parseInt ( eighthNumber);
number9 = Integer.parseInt ( ninethNumber);
number10 = Integer.parseInt ( tenthNumber);


sum = (number1 + number2 + number3 + number4 + number5 + number6 + number7 + number8 +number9 + number10)/10;


JOptionPane.showMessageDialog (
null, "The Average is " + sum, "Results",
JOptionPane.PLAIN_MESSAGE);

if (sum < 50){
JOptionPane.showMessageDialog (
null, "Fail", "Results",
JOptionPane.PLAIN_MESSAGE);

}else{
JOptionPane.showMessageDialog (
null, "Pass", "Results",
JOptionPane.PLAIN_MESSAGE);
} 
System.exit ( 0 ); 
}
} 

共有3个答案

韩弘壮
2023-03-14

下面是一段代码,应该可以帮助您上路:

public void test() {
  double[] numbers = new double[10];
  double sum = 0;
  for ( int i = 0; i < numbers.length; i++ ) {
    String number = JOptionPane.showInputDialog ( "Enter Grade "+(i+1) );
    numbers[i] = Double.parseDouble(number);
    sum += numbers[i];
  }
}
伯晨
2023-03-14

Number1=Integer.parseInt(firstNumber);希望收到一个看起来像整数的字符串,如果您给它的东西看起来像其他任何东西,您将收到一个错误。您应该使用Double.parse加倍(firstNumber);

是的,你绝对应该使用数组。数组的使用允许一个更短的程序;

public class UseArrays {
    public static void main(String[] args){

        int numberOfEntries=10

        double[] numbers =new double[numberOfEntries];

        for(int i=0;i< numbers .length;i++){
            String option =
            JOptionPane.showInputDialog ( "Enter Grade " + i );

            numbers[i]=Double.parseDouble(option);
        }

        double sum=0;

        for(int i=0;i< numbers .length;i++){
            sum+=numbers[i];
        }    


        double average=sum/10;

        System.out.println(average);        

    }
}

还要注意的是,用这种方式创建的程序,除了要短得多的写入时间外,还可以非常轻松地更改条目数。如果你有成百上千甚至上百万的条目,你就不会想手工输入每个条目。

您可以通过不存储每个双精度,然后再添加它们来使这个程序更短(这也将使使用数组变得不必要)。这个程序看起来像;

public class DontUseArrays {
    public static void main(String[] args){

        int numberOfEntries=10
        double sum=0;

        for(int i=0;i< numberOfEntries;i++){
            String option =
            JOptionPane.showInputDialog ( "Enter Grade " + i );

            double number=Double.parseDouble(option);
            sum+=number;

        }

        double average=sum/10;

        System.out.println(average);        

    }
}
岑鸣
2023-03-14

哇,这是很多重复。你可能应该用循环来清理这个问题,比如:

double sum = 0; // initialize variable for sum of all the numbers
for (int i = 1; i <= 10; i ++) { // go from 1 to 10
    String strNum = JOptionPane.showInputDialog("Enter grade #" + i); // prompt for input
    double dNum = Double.parseDouble(strNum); // convert to double
    sum += dNum; // add to sum
}
double avg = sum / 10; // now get the average
 类似资料:
  • 问题内容: 我有K个特征向量,它们全部共享维n,但具有可变维m(nxm)。他们都一起生活在一个清单中。 我正在寻找的是一种聪明的方法,以零填充这些np.arrays的行,以便它们都共享相同的维m。我曾尝试使用np.pad解决它,但我还无法提出一个漂亮的解决方案。朝正确方向的任何帮助或推动将不胜感激! 结果应该使数组看起来像这样: 问题答案: 您可以使用它,它也可以使用指定填充宽度的元组填充数组。为

  • 问题内容: 这可能是一个简单的修复程序,但我只是没有看到它。我想弄清楚,如何从主体正确打印我的方法?我需要获取,设置和返回方法吗?另外,在课堂上我的while循环是否甚至必要? 该程序会编译并一直运行到无穷大,因此我猜while循环是错误的。但是它也仅在每行上连续打印。 扩展main的类是不相关的,并且是项目的一部分。抱歉,如果张贴错误,谢谢您的帮助。 整个程序的输出类似于: 树皮,树皮。 喵喵。

  • 我正在使用OpenCV一段时间,现在我需要这种类型的乘法: 定义一个矩阵,其中包含类型为1的元素。矩阵的大小为:M X N。矩阵必须与Vector相乘,Vector的大小为:N X 1,包含双

  • 希望有人能帮我做这件事,我对Java很在行。我的问题是,当我打印数组时,会得到一些字符,我想打印数组中的点数。(请忽略不相关的代码,我甚至还没有完成)

  • 问题内容: 我想知道从ArrayList转换为Array是否安全/建议?我有一个文本文件,每行一个字符串: 我想将它们读入数组列表,然后将其转换为数组。建议这样做/合法吗? 谢谢 问题答案: 是的,将转换为是安全的。一个好主意取决于您的预期用途。您需要提供的操作吗?如果是这样,请将其保留为。否则转换掉! 输出

  • 问题内容: 我得到以下代码: 这应该在从文件中逐字读取单词时进行大量计数。但是,当我最终尝试将数组打印到终端时,只需检查它是否还可以,然后再开始使程序能够将其写入文本文件,它只会给出一个错误,内容为:[Ljava。 lang.String; @ 163de20但是我不知道在这种情况下如何以及在哪里检查错误?有什么帮助吗? 问题答案: 这不是错误…这是Object类的默认toString()实现返回