Java:为什么我的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: ");
        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");
    }
}

我想用这段代码完成的是,一旦输入一个字母,for语句就会中断并显示“无效”,但是当我运行程序并输入非数字的内容时,它不会离开 for 循环并允许我像往常一样继续输入。

感谢您的宝贵时间。

最佳答案

Break 语句工作正常。因为它破坏了 for 循环的执行,而不是 for do-while 循环的执行。如果要中断 do-while 循环,请在无效的 case else block 中添加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");
    }
}

关于Java:为什么我的break语句不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40270954/

相关文章:

javascript - 为什么我的 JS for 循环不工作? (返回 "undefinded"

java - 在我的例子中, for() 循环有什么问题?

java - 我们什么时候认为 Executor Service 中的工作线程是空闲的

java - 在 java 中设置 textview XML

java - 序列化双括号初始化 Map

使用导入文件的 Java 循环

pandas - 重复将多个 Panda 数据导出到多个 csv 文件的任务

java - 参数化方法的动态多态性

loops - LISP - 在没有 let 的情况下计算循环前的动态迭代器

javascript - ReactJS - onClick 不调用 map() 函数内的函数