无法在Java中打破For循环

时间:2015-10-10 07:47:55

标签: java

我是初学者,正在制作一个小程序来练习我学到的东西。 我正在编写代码来检查学生的成绩。

这是代码:

import java.util。*;

AT TIME ZONE

}

我面临的问题是,即使我输入有效的examType,For循环也不会中断。

4 个答案:

答案 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))