0

どうやら文字列ではなく、数値の配列を使用してコードを記述し、二重にする必要があるとします。私がコードを書いた方法、私が知っている唯一の方法が機能します。多分私はそれを複雑にしすぎて、配列はそれを単純にするでしょう。私はプログラミングが初めてで、数日で初めてです。助けてください。

必要なのは: 10 個の数値の入力を平均し、合格か不合格かと共に平均を表示するコードを作成します。< 50 の場合は不合格、それ以外の場合 > 50 は合格です。

配列を使用する必要があり、JOptionPane.showMessageDialog を使用する必要があります。数値は 2 倍にして、小数点以下 2 桁に丸める必要があります。

double を宣言しましたが、10 進数を入力するとエラーが発生します。コードをそのまま実行すると、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 ); 
}
} 
4

5 に答える 5

1

うわー、それはたくさんの繰り返しです。おそらく、次のようなループでこれをクリーンアップする必要があります。

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
于 2013-10-24T12:03:03.137 に答える
1

number1 = Integer.parseInt ( firstNumber);は、整数に「似ている」文字列を受け取ることを期待していますが、他の何かに「似ている」文字列を指定すると、エラーが発生します。代わりに使用する必要がありますDouble.parseDouble(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);        

    }
}

また、この方法で作成されたプログラムを使用すると、エントリの数を変更するのが非常に簡単であることに注意してください。さらに、記述がはるかに短くなります。数百、数千、さらには数百万のエントリがある場合、各エントリを手で入力したくないでしょう。

各 double を保存せずに後で追加することで、このプログラムをさらに短くすることができます (配列の使用も不要になります)。このプログラムは次のようになります。

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);        

    }
}
于 2013-10-24T12:00:12.660 に答える
0

以下に、コードの一部を示します。

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];
  }
}
于 2013-10-24T12:05:27.080 に答える
0

1000 点を計算する必要があるとしたら? そのため、配列を使用します。

package avgpassorfail;

import javax.swing.JOptionPane;

public class Avgpassorfail 
{    
    public static void main(String[] args) 
    {
        String[] mumStr = new String[10];
        double sum = 0;                

        for (int i = 0; i < numStr.length; i++) //0 to 10 (10 not included)
        {
            numStr[i] =  JOptionPane.showInputDialog ( "Enter Grade " + (i+1)+ ": " );
            sum += Double.parseDouble(numStr[i]); 
        }

        double avg = sum / numStr.length;

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

        if (avg < 50)
        {
            JOptionPane.showMessageDialog (null, "Fail", "Results", JOptionPane.PLAIN_MESSAGE);
        }
        else
        {
            JOptionPane.showMessageDialog (null, "Pass", "Results", JOptionPane.PLAIN_MESSAGE);
        } 

        System.exit ( 0 ); 
    }
} 
于 2013-10-24T12:06:24.043 に答える
0

タイプを使用して解析するStringsにはdoubleDouble.parseDouble(String s)

s は s よりも精度が高く、型変換は明示的なキャストを必要とせずに自動的に行われるため、intから返された sInteger.parseInt(String s)double変数に割り当てることができます。doubleint

ただし、定義によりString、小数点のあるものintを usingに解析することはできません。Integer.parseInt(String s)

追加のポイント -String変数を宣言したり、数値ごとに個別の変数を用意したりする必要はありません。配列とループを使用して数値を入力し、数値が入力されたときにそれらを合計すると、次のようになります。 :

double[] numbers = new double[10];
double sum = 0d;

for(int i = 0; i < numbers.length; i++ ) {
    numbers[i] = Double.parseDouble(JOptionPane.showInputDialog ( "Enter 1st Grade" ));
    sum += numbers[i];
}

double mean = sum / numbers.length;
于 2013-10-24T12:03:09.503 に答える