Java:为什么我的break语句不起作用?
这可能是一个非常简单的错误,但我是Java(以及一般编程)的初学者,我很好奇为什么break语句在我的程序中不起作用Java:为什么我的break语句不起作用?,java,loops,for-loop,break,Java,Loops,For Loop,Break,这可能是一个非常简单的错误,但我是Java(以及一般编程)的初学者,我很好奇为什么break语句在我的程序中不起作用 public class ValidateStudentNumber { public static void main(String[] args) { Scanner kb = new Scanner(System.in); do{ System.out.println("Enter a number: ");
public class ValidateStudentNumber
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
do{
System.out.println("Enter a number: ");
String number = kb.next();
boolean valid = true;
for (int i = 0; i < number.length(); i++){
char c = number.charAt(i);
if(! Character.isDigit(c)) {
valid = false;
break;
}
if ( number.length() != 7) {
valid = false;
}
}
if (valid){
System.out.println("Valid");
}
else{
System.out.println("Invalid");
}
}
while (kb.hasNext());
System.out.println ("Program ending due to end-of-file");
}
}
公共类验证学生编号
{
公共静态void main(字符串[]args)
{
扫描仪kb=新扫描仪(System.in);
做{
System.out.println(“输入一个数字:”);
字符串编号=kb.next();
布尔有效=真;
对于(int i=0;i
我想用这段代码完成的是,一旦键入一个字母,for语句就会中断并显示“Invalid”,然而当我运行程序并键入非数字的内容时,它不会离开for循环,并允许我像往常一样继续键入
谢谢您的时间。中断声明工作正常。因为它中断了for循环而不是for do while循环的执行。若要中断do while循环,请在无效的case else块中添加break语句
public class A
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
do{
System.out.println("Enter a number: ");
String number = kb.next();
boolean valid = true;
for (int i = 0; i < number.length(); i++){
char c = number.charAt(i);
if(! Character.isDigit(c)) {
valid = false;
break;
}
if ( number.length() != 7) {
valid = false;
}
}
if (valid){
System.out.println("Valid");
}
else{
System.out.println("Invalid");
break;
}
}
while (kb.hasNext());
System.out.println ("Program ending due to end-of-file");
}
}
公共A类
{
公共静态void main(字符串[]args)
{
扫描仪kb=新扫描仪(System.in);
做{
System.out.println(“输入一个数字:”);
字符串编号=kb.next();
布尔有效=真;
对于(int i=0;i中断语句工作正常。因为它中断了for循环而不是for do while循环的执行。若要中断do while循环,请在无效的case else块中添加break语句
public class A
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
do{
System.out.println("Enter a number: ");
String number = kb.next();
boolean valid = true;
for (int i = 0; i < number.length(); i++){
char c = number.charAt(i);
if(! Character.isDigit(c)) {
valid = false;
break;
}
if ( number.length() != 7) {
valid = false;
}
}
if (valid){
System.out.println("Valid");
}
else{
System.out.println("Invalid");
break;
}
}
while (kb.hasNext());
System.out.println ("Program ending due to end-of-file");
}
}
公共A类
{
公共静态void main(字符串[]args)
{
扫描仪kb=新扫描仪(System.in);
做{
System.out.println(“输入一个数字:”);
字符串编号=kb.next();
布尔有效=真;
对于(int i=0;i
break
将使您退出包含break语句的循环,即在代码中,它将使您脱离for循环。然后它继续等待来自扫描仪的输入。当您再次键入某个内容时,条件为true,然后循环重新运行。break
将使您退出包含break语句的循环,即在代码中,它将使您脱离for循环。然后它继续等待来自扫描仪的输入。一旦您再次键入某个内容,条件为true,然后循环将重新运行。您似乎想打破do/而不仅仅是for循环。这可以通过标记循环来实现。因此,您可以像这样重写代码:
class ValidateStudentNumber
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
outer:do{
System.out.println("Enter a number: ");
String number = kb.next();
for (int i = 0; i < number.length(); i++){
char c = number.charAt(i);
if(! Character.isDigit(c) || number.length() != 7) {
System.out.println("Invalid");
break outer;
}
}//end of for loop
}while (kb.hasNext());
System.out.println ("Program ending due to end-of-file");
}
}
class ValidateStudentNumber
{
公共静态void main(字符串[]args)
{
扫描仪kb=新扫描仪(System.in);
外:你呢{
System.out.println(“输入一个数字:”);
字符串编号=kb.next();
对于(int i=0;i
您似乎想突破do/而不仅仅是for循环。这可以通过标记循环来实现。因此,您可以像这样重写代码:
class ValidateStudentNumber
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
outer:do{
System.out.println("Enter a number: ");
String number = kb.next();
for (int i = 0; i < number.length(); i++){
char c = number.charAt(i);
if(! Character.isDigit(c) || number.length() != 7) {
System.out.println("Invalid");
break outer;
}
}//end of for loop
}while (kb.hasNext());
System.out.println ("Program ending due to end-of-file");
}
}
class ValidateStudentNumber
{
公共静态void main(字符串[]args)
{
扫描仪kb=新扫描仪(System.in);
外:你呢{
System.out.println(“输入一个数字:”);
字符串编号=kb.next();
对于(int i=0;i
我想用这段代码完成的是,只要键入一个字母,for语句就会中断并显示“Invalid”
如果我正确理解了您的问题,您希望在输入数字时按键盘上的非数字键时,循环中断
从扫描仪
java文档
扫描操作可能会阻止等待输入
什么是