我是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");
}
}
// ************** //
}
答案 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中的陈述应该始终执行,那么您根本不需要这些条件。