我是初学者,正在制作一个小程序来练习我学到的东西。 我正在编写代码来检查学生的成绩。
这是代码:
import java.util。*;
AT TIME ZONE
}
我面临的问题是,即使我输入有效的examType,For循环也不会中断。
答案 0 :(得分:3)
您需要使用String.equals()
。
Scanner.next()
返回String
。在字符串上使用==
不会产生任何错误,但会测试引用相等而不是值相等。即使字符串的值相等,它也不会返回true
。
正确的代码:
if(examType.equals("FA") || examType.equals("SA")){
break;
}
修改强>
OP在评论中提到循环将在没有结束的情况下运行,直到达到break
。您可以使用以下两种方式之一创建无限循环:
for(;;){
//runs infinitely
}
OR
while(true){
//runs infinitely
}
这两个无限循环都被break
打破。此外,您使用较少的内存(尽管差异很小且几乎无关紧要),因为您没有计数器变量。在接下来不可能的情况下,用户输入无效输入的次数使得整数溢出,没有变量消除了这种风险。您还可以节省处理器时间,因为没有指令来分配内存或在数字中添加一个内存。
答案 1 :(得分:1)
public static void main(String args[]) {
String studentName;
int rollNo = 0;
Scanner inputter = new Scanner(System.in);
System.out.println("Please enter the roll number of the student: ");
rollNo = inputter.nextInt();
System.out.println("Thank you. Now, please enter the student's name: " );
studentName = inputter.next();
for(int i=0; ; i++){
System.out.println("Please enter a valid examination type, i.e FA or SA: ");
String examType = inputter.next();
examType = examType.toUpperCase();
if(examType.equals("FA") || examType.equals("SA")){
break;
}
}
}
这很好。
答案 2 :(得分:0)
您尚未设置限制,例如
for(int i = 0; i < somevalue; i++)
否则while循环可能是更好的选择,如:
while(examType.equals("FA") || examType.equals("SA")
答案 3 :(得分:0)
为了获得最佳编码练习,请按照Sonar合规标准对字符串使用等于下面的代码片段。
(“SA”.equals(examType))