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");