我在while循环中遇到了这个问题:
while((input = InputHandler.getInt()) != 1 && input != 2){
if(input == InputHandler.CODE_ERROR)
System.out.print("Input must be a number");
}
这个while循环只接受一次输入,不会再次请求它,所以它会循环整个时间接受一次该输入。我在这里做错了什么,因为对我来说,这个诡计循环真的很奇怪?
InputHandler类:
public class InputHandler {
public static Scanner in = new Scanner(System.in);
public static int CODE_ERROR = -6;
public static int getInt(){
try{
return in.nextInt();
} catch(InputMismatchException e){
return CODE_ERROR;
}
}
}
我运行代码,它工作正常,每次都要求输入,当我给出2或1个循环时就终止。下面是我运行的代码示例
package testing;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test123 {
public static Scanner in = new Scanner(System.in);
public static int CODE_ERROR = -6;
public static int getInt(){
try{
String in1 = in.next();
return Integer.parseInt(in1);
//return in.nextInt(); <-- This is leading to error
} catch(Exception e){
return CODE_ERROR;
}
}
public static void main(String[] args) {
int input;
while((input = Test123.getInt()) != 1 && input != 2){
if(input == Test123.CODE_ERROR)
System.out.print("Input must be a number");
System.out.println("\nWrong number: "+input+" Please try again.");
//input = Test123.getInt();
}
}
}
我不明白你为什么面临问题?
目前,如果在命令行中输入了非整数,您的代码会进入一个无休止的循环。这是因为您的in.nextInt()
方法引发了异常,并将违规值留在了扫描仪中。
您需要使用导致异常的无效令牌,方法是调用in.next();
:
public static void main(String[] args) throws Exception {
int input;
while ((input = InputHandler.getInt()) != 1 && input != 2) {
if (input == InputHandler.CODE_ERROR)
System.out.print("Input must be a number");
}
}
public static class InputHandler {
public static Scanner in = new Scanner(System.in);
public static int CODE_ERROR = -6;
public static int getInt(){
try{
return in.nextInt();
} catch(InputMismatchException e){
in.next(); // <------------------ this should solve it
return CODE_ERROR;
}
}
}
我是java套接字编程的新手,我正在制作一个客户端服务器程序。服务器是多线程的。当客户端与服务器的连接打开时。服务器向客户端发送一个文本块,如下所示: 当我键入读取或退出或任何操作时,它工作正常,服务器响应。但是当我选择一个操作即插入时,就会出现问题—— 我不知道这个循环是如何发生的,特别是因为服务器在选择操作时正确接受输入,但是当选择插入操作时,它只是无限地接受输入,有人能帮忙吗,如果这个问题仍
你好,有人能解释一下为什么这会形成一个无限循环吗。谢谢
我是JAVA的新手,文本字段是否可以只接受数字输入?是否也有可能在代码内部有一个等式?例如:(毛额*10) 下面是我希望有数值输入的代码://Display private class Handler implements ActionListener{public void actionPerformed(ActionEvent e){
问题内容: 假设我有一个代码,要求用户提供一些输入,例如: 但是我想给用户60秒的时间限制,然后抛出一个异常(在这种情况下,我认为是)。我怎么做? 问题答案:
提前谢谢你的时间。
所以我做了一个测试窗口,里面有一个JTextField。我不知道出了什么问题。下面是主要代码。问题是,无论我做什么,我都无法编辑文本字段,也无法编辑我创建的第二个文本字段。我有一个带有文本字段的示例程序,它也可以工作,但根本不工作。 我不确定是否需要发布它,但我可以在这里获得完整程序的示例罐。我只发布了处理文本字段的区域 编辑:完整的源代码可在此处获得:GITHUB 我移除了一些东西,它成功了,我