我正在尝试建立一个与用户指示一样高的金字塔。如果我使用下面的代码,它会告诉我我没有引入一个Integer btw 1-20 ... 评论 if(scan.hasNextInt ...)使代码工作,只要我不插入数字< 1。
我正确使用 hasNextInt()吗?
Scanner scan = new Scanner (System.in);
int rows = 0, i=1, j=0;
//Asking for the Input
System.out.println("How many rows should the pyramid have?\n"+
"(Insert an Integer btw 1-20)");
//Checking if there's an Input
if (scan.hasNextInt() && rows>0 && rows<=20)
rows = scan.nextInt();
else System.out.println("Not an Integer btw 1-20 inserted");
//Building the pyramid
while (i<=rows){
while (j<i){System.out.print("*");j++;}
System.out.println();
i++;j=0;
}
scan.close(); //closing scan
}
答案 0 :(得分:1)
您遇到的问题是rows
变量等于0
,因此它不会进入if
声明。
if (scan.hasNextInt() && rows>0 && rows<=20) //Here rows it's equals to 0
rows = scan.nextInt();
else System.out.println("Not an Integer btw 1-20 inserted");
您必须在输入rows
之前修改if
变量,否则,它始终会显示消息"Not an Integer btw 1-20 inserted"
。
尝试做:
if (scan.hasNextInt())
do{
rows = scan.nextInt();
while(rows>0 && rows<=20);
else System.out.println("There is no integer");
如果您希望用户强制在这两个号码之间输入int
。如果没有,您可以用do-while
语句替换if
循环。
我希望它会对你有所帮助!
答案 1 :(得分:1)
首先你做:
int rows = 0
然后
if (scan.hasNextInt() && rows>0 && rows<=20)
这不可能是真的,因为您只在检查后更改行的值。更改行的条件或初始值。
如果你想确定用户在某个时间间隔内输入的整数,你应该使用do ... while循环或类似的东西,并提示用户再次输入一个数字,如果它不在允许的时间间隔内。< / p>
这样的事情:
do {
//Asking for the Input
System.out.println("How many rows should the pyramid have?\n"+
"(Insert an Integer btw 1-20)");
//Checking if there's an Input
if (scan.hasNextInt()) {
rows = scan.nextInt();
if (rows > 0 && rows <= 20)
break; // leave the loop and continue
else
System.out.println("Not an Integer btw 1-20 inserted");
}
} while (true); // loop forever.
答案 2 :(得分:1)
这是问题
StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" sick").append(" sad").append(" world!").append(" 213763e83456382582463456");
String a = sb.toString();
最初if (scan.hasNextInt() && rows>0 && rows<=20)
。
您可以尝试rows =0
并检查值是否介于0和20之间