2
public static void main (String [] args)
{
    // declare variables, capture input

    String input, name = JOptionPane.showInputDialog("Please " +
                          "enter your first and last name.");
    double testScore1, testScore2, testScore3, average;

    // capture input, cast, and validate input

    input = JOptionPane.showInputDialog("What is the score " +
                                        "of your first test?");
    testScore1 = Double.parseDouble(input);

    while (testScore1 < 1 || testScore1 > 100)
    {
        input = JOptionPane.showInputDialog("This test score is not " +
                "between 1 and 100. \nPlease enter a test score in " +
                "this range:");

        testScore1 = Double.parseDouble(input); 
    }

    input = JOptionPane.showInputDialog("What is the score " +
                                        "of your second test?");
    testScore2 = Double.parseDouble(input);

    while (testScore2 < 1 || testScore2 > 100)
    {
        input = JOptionPane.showInputDialog("This test score is not " +
                "between 1 and 100. \nPlease enter a test score in " +
                "this range:");

        testScore2 = Double.parseDouble(input); 
    }

    input = JOptionPane.showInputDialog("What is the score " +
                                        "of your third test?");
    testScore3 = Double.parseDouble(input);

    while (testScore3 < 1 || testScore3 > 100)
    {
        input = JOptionPane.showInputDialog("This test score is not " +
                "between 1 and 100. \nPlease enter a test score in " +
                "this range:");

        testScore3 = Double.parseDouble(input);
    }

    // calculate average and display output

    average = (testScore1 + testScore2 + testScore3)/3; 

    JOptionPane.showMessageDialog(null, name + ", your average score is: " + average);

}

まず、私は初心者プログラマーです。私の専門用語と専門用語はかなり不足しているので、我慢してください。

3つのテストスコアをキャプチャし、whileループを使用してそれらを検証するプログラムを作成しています(1〜100の範囲内である必要があります)。次に、テストスコアが平均化され、出力に平均が表示されます。かなり単純なもの。

可能であれば、テストスコアの数を取得し、そこから実際の各スコアを取得する方法を見つけたいと思います。たとえば、プログラムは「平均していくつのテストが計算されていますか?」と尋ね、その数を取得して、プログラムが「テストスコア(1)を入力してください:」などのプロンプトを表示する回数と同じにします。 。したがって、さらに明確にするために、ユーザーがテストの数として4を入力した場合、スコアを入力するためのプロンプトが4回表示されます。

上記のコードは、スコアごとにwhileループを使用することで冗長であると感じていますが、プログラムは3スコアのみを対象としているため、制限されています。どんな助けでも大歓迎です、そしてコードの他のものを自由に批評してください。

4

3 に答える 3

4

はい、できます。

必要なのはネストされたループです。擬似コードの場合:

while(condition)
{
   int numberOfInput = getInput() ; //get the input from the user

   for(int i =0 ; i < numberOfInput; i++) //iterate for the amount of prompts required
     prompt() ; //get input

}



function prompt
      while (testScore1 < 1 || testScore1 > 100)
      {
        input = JOptionPane.showInputDialog("This test score is not " +
                "between 1 and 100. \nPlease enter a test score in " +
                "this range:");

        testScore1 = Double.parseDouble(input); 
      }
于 2012-10-19T19:29:54.027 に答える
1

簡単な答え:はい、可能です。
オプション1:最初に、入力する予定のスコアの数をユーザーに尋ね、それをint変数に格納します。
例えば:

  
       Ask user how many scores to enter.
       Check the response, and store it in an int variable.
       Create a double variable to add the scores (initialize it to 0.0)

       Use a for loop, asking for the score;
       Evaluate the score to ensure it's a valid number
         If it's not a valid number, prompt the user again (this is still within 
          the same iteration, not a different iteration)
         If it's a valid number, add it to the total scores variable
       Once loop is exhausted, just divide the two variables (since the total 
         scores is a double, your answer will automatically be a double)
       Display the answer. 

  

オプション2:センチネルループを使用します(ユーザーは文字(通常は「Q」または「N」)または何かを入力してループを終了する必要があります)

  
       Create an int variable to store total loops (initialize to 0).
       Create a double variable to add the scores (initialize it to 0.0)

       Use a for loop, asking for the score;
       Check if the value is the quit character
        If it is not
          Evaluate the score to ensure it's a valid number
            If it's not a valid number, prompt the user again (this is still within 
            the same iteration, not a different iteration)
          If it's a valid number, add it to the total scores variable and increment 
          the total loops variable by 1.
        If it is
         just divide the two variables (since the total 
         scores is a double, your answer will automatically be a double)
       Display the answer. 

  

それが役に立てば幸い。

于 2012-10-19T19:51:17.120 に答える
0

http://korada-sanath.blogspot.in/p/discussion-on-tech-topics.htmlには、基本的なJavaプログラミングスキルに関する同様の問題を示す擬似コードがあります。そのループセクションでは、ユーザーが入力したスコアが1〜100の範囲にあるかどうかのチェックを追加するだけです。そうでない場合は、ループ変数を「1」減らして、ユーザーがもう一度スコアを入力できるようにすることができます...

詳細については、上記のリンクにあるコードのループセクションに以下のコードを追加してください。

ユーザーが入力した値をtestScores配列に直接割り当てる代わりに、1つの一時変数を使用して、ユーザーが範囲内のスコアを入力したかどうかを割り当てることができます。

Double temp = Double.parseDouble(br.readLine());
if(temp > 1 && temp < 100) {

    testScores[loopVar] = temp;

} else {

    loopVar--;
}
于 2012-10-19T20:14:18.167 に答える