Java 如何通过一个循环从用户那里获取一个介于2和10之间的数字,而不是一个字符串?
我被困在这个while循环中。 它是关于获取一个输入(int)n=number,所以我们需要hasNextInt(),并且这个输入需要介于2和10之间Java 如何通过一个循环从用户那里获取一个介于2和10之间的数字,而不是一个字符串?,java,eclipse,Java,Eclipse,我被困在这个while循环中。 它是关于获取一个输入(int)n=number,所以我们需要hasNextInt(),并且这个输入需要介于2和10之间 import java.util.Scanner; public class GetNumber { public static void main(String[] args) { //kb = keyboard Scanner kb = new Scanner(System.in);
import java.util.Scanner;
public class GetNumber {
public static void main(String[] args) {
//kb = keyboard
Scanner kb = new Scanner(System.in);
boolean out = true;
//n = number
int n = 0;
//loop
while (out) {
System.out.println("Enter a number between 2 and 10.");
if (kb.hasNextInt()) {
n = kb.nextInt();
if ((n >= 2 && n <= 10)) {
out = false;
} else {
System.out.println("Please a number between 2 and 10.");
kb.next();
}
out = false;
} else {
System.out.println("Enter a number!");
kb.next();
}
}
out = true;
}
}
import java.util.Scanner;
公共类GetNumber{
公共静态void main(字符串[]args){
//kb=键盘
扫描仪kb=新扫描仪(System.in);
布尔输出=真;
//n=数量
int n=0;
//环路
在外{
System.out.println(“输入一个介于2和10之间的数字”);
if(kb.hasNextInt()){
n=kb.nextInt();
如果((n>=2&&n这要简单得多
public static void main (String[]args){
//kb = keyboard
Scanner kb = new Scanner(System.in);
int n = 0;
//loop
do{
System.out.println("Enter a number between 2 and 10.");
n=kb.nextInt();
}while(n<2 || n>10);
System.out.println("Nice, you selected "+n);
}
publicstaticvoidmain(字符串[]args){
//kb=键盘
扫描仪kb=新扫描仪(System.in);
int n=0;
//环路
做{
System.out.println(“输入一个介于2和10之间的数字”);
n=kb.nextInt();
}而(n10);
System.out.println(“很好,您选择了”+n);
}
最终扫描仪kb=新扫描仪(System.in);
整数temp=null;
while(temp==null){
System.out.println(“输入一个介于2和10之间的数字”);
最终字符串输入=kb.nextLine();
试一试{
最终整数值=Integer.valueOf(输入);
如果(值>=2&&value<10){
温度=值;
}否则{
System.out.println(“错误的数字,请重试”);
}
}捕获(NumberFormatException ex){
System.out.println(“不是数字,请重试”);
}
}
int n=温度;
这类似于@Antoniossss answer,但它处理一些边缘情况(非数字输入)。它使用一个临时值来保存结果,在验证时使用一个名为value的整数来保存该值。我也尝试了这个方法
do {
System.out.print("Choose a number between[2-10]");
while(!kb.hasNextInt()){
kb.nextLine();
System.out.println("It's not a valid number.");
}
n = kb.nextInt();
} while ((v<=1 || v>=11));
do{
系统输出打印(“在[2-10]之间选择一个数字”);
而(!kb.hasnetint()){
kb.nextLine();
System.out.println(“这不是一个有效的数字。”);
}
n=kb.nextInt();
}而((v=11));
试着去掉多余的代码,使用Do-while循环在主体和控件之后进行测试
do
{
if(n>=2&&n<=10)
{
...
out = true;
}
else
}
out = false;
...
}
}
while(!out);
do
{
如果(n>=2&&n您可以使用Scanner\nextLine()
,然后在的帮助下将字符串
转换为int
,您是否忘记了break
?您似乎没有定义n和salir?是的,很抱歉已更改!salir=out如果您的输入是字符串,此程序将崩溃:-)可能是类型检查未命中该操作如何处理用户输入任意文本字符串的情况?我希望您可以手动检查hasnetint()
,或者捕获结果inputmaschException
,例如,如果输入为“0xfoo12”.try catch and ignore将nextInt
包装为try catch and ignore。这看起来像是您的输入错误,Integer
!=Integer
如果(value>=2&&value<10)
表示未定义参数类型的运算符>=Integer,int@jrtapsell您运行的是什么版本的Java?我在eclipse上运行jdk-8u144-windows-x64@jrtapsell ideAutoboxing应该允许这些,您能检查一下您没有看到旧版本的目标版本吗
do
{
if(n>=2&&n<=10)
{
...
out = true;
}
else
}
out = false;
...
}
}
while(!out);