有问题或其他声明。

时间:2013-09-13 09:32:10

标签: java boolean

我是java的新手(第三周课程),但我一直在努力研究这段代码几个小时,我似乎无法找到我正在做的事情的答案。 javac告诉我,我只有三个错误,但我想知道是否还有更多错误。 这是我的代码,我知道我的平均部分仍然需要工作,但我无法弄清楚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");
        }

    }

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

}

3 个答案:

答案 0 :(得分:2)

你的if语句到底有;

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

他们正在考虑作为陈述并继续进行。

在每个陈述的末尾删除所有这些内容。

答案 1 :(得分:1)

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

;不应该在这里。

&&&之间的差异:

&安培; &lt; - 验证两个操作数
&安培;&安培; &lt; - 停止评估第一个操作数是否计算为false,因为结果将为false

(x != 0) & (1/x > 1)&lt; - 这意味着评估(x != 0)然后评估(1/x > 1)然后执行&amp ;.问题是,对于x = 0,这将抛出异常。

(x != 0) && (1/x > 1)&lt; - 这意味着评估(x != 0),只有当这是真的,然后评估(1/x > 1)所以如果你有x = 0那么这是非常安全的,不会抛出如果(x!= 0)的计算结果为false,则整个事物直接求值为false而不评估(1/x > 1)

另一件事:

if(true)
        {
            {

这应该删除,因为它只是添加更多代码,每次都会执行,所以不需要添加它。

答案 2 :(得分:0)

除了冒号结束if语句之外,你还应该记住,如果你使用

               if(true){
               }else{
               }

else语句永远不会执行cos if if将永远为true,所以你应该使用yes / no变量作为if语句的标志而不是&#34; true&#34;本身。

如果您在if中的陈述应该始终执行,那么您根本不需要这些条件。