-1

私は本当に Java に慣れていません (クラスの 3 週目) ですが、このコードに何時間も取り組んできましたが、自分がやっていることに対する答えが見つからないようです。javac は、エラーが 3 つしかないことを示していますが、それ以上のエラーがあるかどうか疑問に思っています。これが私のコードです。平均的なセクションにはまだ作業が必要であることはわかっていますが、ifステートメントとelseステートメントの中間セクションで何が起こっているのかわかりません。これが本当にばかげている場合は申し訳ありません。私の構文がいたるところにあると確信しています:

import java.util.Scanner;
public class Program1
{
    static public void main( String args [ ] )
    {
        int grade;
        int A,B,C,D,F;

        A = 0;
        B = 0;
        C = 0;
        D = 0;
        F = 0;

        System.out.println( "***************  Grade Computer *************");

        // ********************** //
        Scanner kbd = new Scanner (System.in);
        System.out.println("Enter Students First Name: ");
        String fname = kbd.next( );
        System.out.println("Enter Students Middle Initial: ");
        String mi = kbd.next( );
        System.out.println("Enter Students Last Name: "); 
        String lname = kbd.next( );
        System.out.println("Enter First Exam Grade: ");
        int firstexam = kbd.nextInt( );
        System.out.println("Enter Second Exam Grade: ");
        int secondexam = kbd.nextInt( );
        System.out.println("Enter Third Exam Grade: ");
        int thirdexam = kbd.nextInt( );
        System.out.println("Was the bonus done? [yes/no] : ");
        boolean b = kbd.nextBoolean( );

        boolean yes = true;
        boolean no = false;

        // *********************** //

        if(true)
        {
            {
                if((firstexam >= (secondexam * 0.60 ) ) & (firstexam >= (thirdexam * 0.80 )));
                {
                    System.out.println(firstexam);
                }
                else if((secondexam * 0.60) >= (thirdexam * 0.80));
                {
                    System.out.println(secondexam * 0.60);
                }
                else {
                    System.out.println(thirdexam * 0.80);
                }
            }

            if(true)
            {
                if((secondexam >= firstexam) & ((thirdexam * 0.80) >= secondexam));
                {
                    if(secondexam >= (thirdexam * 0.80));
                    {
                        System.out.println(secondexam);
                    }
                }
                else {
                    System.out.println(thirdexam * 0.80);
                }
            }

            else {
                System.out.println(firstexam);
                System.out.println(secondexam);
                System.out.println(thirdexam);
            }
        }

        // ********************** //

        System.out.println(" **********Grade Summary********** ");
        double average = calcAverage(firstexam, secondexam, thirdexam);
        System.out.println("Grade Report For: " + fname);
        if (true)
        {
            System.out.println("Bonus was done so grades are adjusted if appropriate.");
        }
        else
        {
            System.out.println("Bonus was not done.");
        }
        System.out.println("Exam 1: " + firstexam);
        System.out.println("Exam 2: " + secondexam);
        System.out.println("Exam 3: " + thirdexam);
        System.out.println("The average is: " + average);
        determineGrade(average);
    }

    public static double calcAverage(int firstexam, int secondexam, int thirdexam) 
    {
        double average = (firstexam + secondexam + thirdexam) / 3.0;
        return average;

    }

    public static void determineGrade(double average)
    {
        if (average>90)
        {
            System.out.println("Grade: A");
        }
        else if (average>=80)
        {
            System.out.println("Grade: B");
        }
        else if (average>=70)
        {
            System.out.println("Grade: C");
        }
        else if (average>=60)
        {
            System.out.println("Grade: D");
        }
        else if (average<60)
        {
            System.out.println("Grade: F");
        }

    }

    // ************** //

}
4

3 に答える 3

1
if((firstexam >= (secondexam * 0.60 ) ) & (firstexam >= (thirdexam * 0.80 )))   (;)

ここ;にいるべきではありません。

&との違い&&:

& <-- 両方のオペランドを検証します
&& <-- 結果が false になるため、最初のオペランドが false と評価された場合は評価を停止します

(x != 0) & (1/x > 1)<-- これは、評価して(x != 0)から評価(1/x > 1)してから & を実行することを意味します。問題は、x=0 の場合、例外がスローされることです。

(x != 0) && (1/x > 1)<-- これは評価を意味し(x != 0)、これが true の場合にのみ評価する(1/x > 1)ため、x=0 の場合、これは完全に安全であり、(x != 0) が false に評価された場合、すべてが直接 false に評価されても例外はスローされませんを評価せずに(1/x > 1)

別物 :

if(true)
        {
            {

これはコードを追加するだけなので削除する必要があります。毎回実行されるため、追加する必要はありません。

于 2013-09-13T09:45:58.660 に答える
0

コロンのほかに、if ステートメントの末尾にも注意する必要があります。

               if(true){
               }else{
               }

if ステートメントは常に true になるため、else ステートメントは決して実行されないため、「true」自体ではなく、if ステートメントのフラグとして yes/no 変数を使用する必要があります。

if 内のステートメントを常に実行する必要がある場合は、条件はまったく必要ありません。

于 2013-09-13T09:44:13.100 に答える