Java scanner.next()不会停止 公共类电子计数器{ 公共电子计数器(用户)引发IOException{ 扫描仪=新的扫描仪(System.in); 布尔完成=假; loginName=user.getName(); System.out.println(“-------------------------------------------------------------------------------------”); System.out.println(“欢迎来到电子销售柜台!”); 而(!完成){ 试一试{ System.out.print(“请输入'1'记录销售额,或输入'2'退出:”); 输入=scanner.nextLine(); System.out.println(“bug”); 如果(输入=“1”){ System.out.println(“请输入采购产品ID和编号列表”); 完成=正确; } 否则如果(输入=“2”){ System.out.println(“用户”+loginName+“已成功注销!”); 完成=正确; } 否则{ System.out.println(“无效命令”); } } 捕获(无接触元素例外e){ System.out.println(“无此类元素”); } 捕获(非法状态){ System.out.println(“非法状态”); } } scanner.close(); } 静态字符串登录名; 静态字符串输入; }

Java scanner.next()不会停止 公共类电子计数器{ 公共电子计数器(用户)引发IOException{ 扫描仪=新的扫描仪(System.in); 布尔完成=假; loginName=user.getName(); System.out.println(“-------------------------------------------------------------------------------------”); System.out.println(“欢迎来到电子销售柜台!”); 而(!完成){ 试一试{ System.out.print(“请输入'1'记录销售额,或输入'2'退出:”); 输入=scanner.nextLine(); System.out.println(“bug”); 如果(输入=“1”){ System.out.println(“请输入采购产品ID和编号列表”); 完成=正确; } 否则如果(输入=“2”){ System.out.println(“用户”+loginName+“已成功注销!”); 完成=正确; } 否则{ System.out.println(“无效命令”); } } 捕获(无接触元素例外e){ System.out.println(“无此类元素”); } 捕获(非法状态){ System.out.println(“非法状态”); } } scanner.close(); } 静态字符串登录名; 静态字符串输入; },java,java.util.scanner,Java,Java.util.scanner,当计算scanner.nextLine()时,扫描仪不会停止搜索令牌。我想问一下如何停止扫描仪等待输入??谢谢永不使用=比较字符串。使用==比较字符串对象时,您不是在比较它的值,而是在比较它的引用 始终使用equals方法进行比较 public class ElectronicCounter { public ElectronicCounter(User user)throws IOException{ Scanner scanner = new Scanner(Sys

当计算
scanner.nextLine()
时,扫描仪不会停止搜索令牌。我想问一下如何停止扫描仪等待输入??谢谢

永不使用
=
比较字符串。使用
==
比较字符串对象时,您不是在比较它的值,而是在比较它的引用

始终使用equals方法进行比较

public class ElectronicCounter {

    public ElectronicCounter(User user)throws IOException{
        Scanner scanner = new Scanner(System.in);
        boolean done = false;
        loginName = user.getName();

        System.out.println("--------------------------------------------------------");
        System.out.println("Welcome to the Electronic-Sales Counter! ");

        while(!done){
            try{
                System.out.print("Please enter '1' to record sales or '2' to exit:");
                input = scanner.nextLine();
                System.out.println("bug");
                if(input=="1"){
                    System.out.println("Please enter a list of purchasing-product ID and number");
                    done = true;
                }
                else if(input=="2"){
                    System.out.println("<LOG> User " +loginName+ " has successfully logged off! ");
                    done = true;
                }
                else{
                    System.out.println("<LOG> Invalid command");
                }
            }
            catch (NoSuchElementException e){
                System.out.println("<LOG> No Such Element");
            }
            catch (IllegalStateException e){
                System.out.println("<LOG> IllegalState");
            }
        }
        scanner.close();
    }

    static String loginName;
    static String input;
}

最好使用
“2”。等于(输入)
,因为在这种情况下,您无法获得NPE@nikis我很确定
nextLine()
不会返回null,它会抛出
NoTouchElementException
IllegalStateException
。是的,但我说的是通用的case@nikis那么,,您是对的:)但是请注意,有时您可能更希望知道字符串是否为null,正如在这个答案中所说的:但是死循环仍然存在,即使我将其更改为input.equals(“1”)和input.equals(“2”)
input.equals("2");