退出java上的while循环
我正在尝试创建一个程序,使用getInt方法确保用户输入一个正数。到目前为止,我有这个退出java上的while循环,java,while-loop,Java,While Loop,我正在尝试创建一个程序,使用getInt方法确保用户输入一个正数。到目前为止,我有这个 public class Binary { public static void main(String [ ] args) { Scanner CONSOLE = new Scanner(System.in); int decimal=getInt(CONSOLE, "Enter a positive integer: "); } public static int get
public class Binary {
public static void main(String [ ] args) {
Scanner CONSOLE = new Scanner(System.in);
int decimal=getInt(CONSOLE, "Enter a positive integer: ");
}
public static int getInt(Scanner CONSOLE, String prompt) {
System.out.print(prompt);
while (!CONSOLE.hasNextInt()) {
CONSOLE.next();
System.out.println("Not an integer; try again.");
System.out.println(prompt);
}
int posInt=CONSOLE.nextInt();
while (posInt <= 0) {
System.out.println("Not a positive integer; try again.");
CONSOLE.next();
System.out.println(prompt);
}
return CONSOLE.nextInt();
}
}
公共类二进制文件{
公共静态void main(字符串[]args){
扫描仪控制台=新扫描仪(System.in);
int decimal=getInt(控制台,“输入正整数:”);
}
公共静态int getInt(扫描仪控制台,字符串提示符){
系统输出打印(提示);
而(!CONSOLE.hasnetint()){
CONSOLE.next();
System.out.println(“不是整数;请重试。”);
System.out.println(提示);
}
int posInt=CONSOLE.nextInt();
而(posInt您的问题是返回控制台.nextInt();
在方法的末尾,您正在调用CONSOLE.nextInt()
,它再次请求输入
返回posInt
,您就没事了
祝你好运,你的问题是返回控制台.nextInt();
在方法的末尾,您正在调用CONSOLE.nextInt()
,它再次请求输入
返回posInt
,您就没事了
祝你好运,就像其他人说的那样,你可以返回posInt,你应该会没事的。
但是我对您的
getInt
方法有一些建议:
public static int getInt(Scanner CONSOLE, String prompt) {
//initialize vars
boolean valid = false;
int posInt = 0;
//while the input is not valid, loop over the evaluation
while(!valid){
System.out.print(prompt);
if (!CONSOLE.hasNextInt()) {
CONSOLE.next();
System.out.println("Not an integer; try again.");
//"continue" stops the loop here and starts it from the beginning
continue;
}
posInt=CONSOLE.nextInt();
if (posInt > 0) {
//valid = true will get us out of the loop
valid = true;
}else {
System.out.println("Not a positive integer; try again.");
}
}
return posInt;
}
如果之前的输入无效,此代码将从头开始重新评估输入。在代码中,如果输入负整数,系统将提示您重新输入一个数字。
但是既然你已经在
while(posInt中了,就像其他人说的那样,你可以返回posInt
,你应该会没事的。
但是我对您的getInt
方法有一些建议:
public static int getInt(Scanner CONSOLE, String prompt) {
//initialize vars
boolean valid = false;
int posInt = 0;
//while the input is not valid, loop over the evaluation
while(!valid){
System.out.print(prompt);
if (!CONSOLE.hasNextInt()) {
CONSOLE.next();
System.out.println("Not an integer; try again.");
//"continue" stops the loop here and starts it from the beginning
continue;
}
posInt=CONSOLE.nextInt();
if (posInt > 0) {
//valid = true will get us out of the loop
valid = true;
}else {
System.out.println("Not a positive integer; try again.");
}
}
return posInt;
}
如果之前的输入无效,此代码将从头开始重新评估输入。
在代码中,如果输入负整数,系统将提示您重新输入一个数字。
但是,由于您已经在while(posInt)中,因此行return CONSOLE.nextInt();
似乎在提示用户输入另一个整数,即使他们已经输入了一个整数。行return CONSOLE.nextInt()
似乎在提示用户输入另一个整数,即使他们已经输入了一个整数。我尝试过这样做,它仍然会给我同样的问题。我尝试过这样做,它仍然会给我同样的问题。@ElizabethFlores如果这个答案最适合你,请投票并将我的答案标记为最佳答案,以便其他人有类似问题的人可以更容易地找到解决方案。很高兴我能帮上忙=)这是我第一篇关于这个的帖子,所以我是一个newbie@ElizabethFlores如果这个答案最适合您,请投票并将我的答案标记为最佳答案,以便其他有类似问题的人可以更容易地找到解决方案。很高兴我能帮助=)这是我第一篇关于这个的帖子,所以我是个新手