2

だから私は入門Javaコースにいて、この一連の条件で成績を調整する追加のタスクで成績計算機を作っています:

学生がボーナスワークを完了した場合:

  • 試験 1 の成績は次のいずれかです。
    • 元の試験 1 の成績より高い場合は、試験 2 の成績の 80%、または
    • 元の試験 1 の成績。
  • 試験 2 の成績は次のいずれかです。
    • 元の試験 2 の成績より高い場合は、試験 3 の成績の 80%、または
    • 元の試験 2 グレード。

変更は常に試験 1 に対して最初に行われます。

私は最初に試験 1 の成績でこれを試しg1n、値g2 * 0.8ifを割り当てようとし、それ以外(g2 * 0.8) > g1の値を与えましたg1。がどのように初期化されていないかを確認するのに苦労してg1nいます。これは、リストしたばかりの条件が網羅的であるように思われるからです。

以下は私のコードの関連部分です。何を与える?

// declare variables
int g1;
int g2;
int g3;
char grade;
double g1n;
double g2n;
double avg;
String bonus;

// get input
System.out.println("***************  Grade Computer *************");
System.out.println("Enter the student's first name: ");
String first = input.next();
System.out.println("Enter the student's middle initial: ");
String mid = input.next();
System.out.println("Enter the student's last name: ");
String last = input.next();
System.out.println("Enter EXAM 1 grade: ");
g1 = input.nextInt();
System.out.println("Enter EXAM 2 grade: ");
g2 = input.nextInt();
System.out.println("Enter EXAM 3 grade: ");
g3 = input.nextInt();
System.out.println("Was bonus work done? [yes/no]: ");
bonus = input.next();
System.out.println(g1 + " " + g2 + " " + g3 + " " + bonus);

// adjust exam scores if necesssary
if (bonus.equals("yes")) {
    if (((double)g2 * 0.8) > g1) {
        g1n = ((double)g2 * 0.8);
    } else {
        g1n = (double)g1;
    }
}

編集:

これに変更しましたが、まだ同じメッセージが表示されます...

if (bonus.equals("yes")) {
    if (((double)g2 * 0.8) > g1) {
        g1n = ((double)g2 * 0.8);
    }
    if (((double)g3 * 0.8) > g2) {
        g2n = ((double)g3 * 0.8);
    }
} else {
    g1n = (double)g1;
    g2n = (double)g2;
}

// compute average
avg = (g1n + (double)g2 + (double)g3) / 3;
4

3 に答える 3

3

bonusが と等しくない場合、"yes"は設定されませんg1n

于 2013-01-17T00:30:28.380 に答える
1

設定される唯一の場所g1nif (bonus.equals("yes"))句です。bonusが と等しくない場合、"yes"g1n設定されません。あなたの既存は、2 番目に をelse提供します。存在しない変数を別の変数に追加することはできません。elseif

g1nがと等しくない場合は、プログラムをトレースできます"yes"g1nの場合を除き、どこにも値を割り当てませんbonus.equals("yes")

if句の後に言って、これを修正しelse { g1n = 0; }ます。

于 2013-01-17T00:36:00.937 に答える
0

これは、g1n を初期化できなかったためです。

if (bonus.equals("yes")) {  // if bonus is yes

    if (((double)g2 * 0.8) > g1) {

        g1n = ((double)g2 * 0.8);
    } 
        else {

            g1n = (double)g1; 
    }

    // compute average
    avg = (g1n + (double)g2 + (double)g3)/3;
}

ボーナスが「はい」以外の場合、g1n は引き続き null になる可能性があります。したがって、上記のように、平均計算を if に入れるだけです。

于 2013-01-17T00:35:52.437 に答える