我是初学者,我必须编写一个代码,用于计算用户给我的半径的面积和周长。那个部分很简单,但老师也希望我只接受有效的整数,并让用户在输入错误时重新输入一个值......
所以我能够让它显示每个案例的错误信息,除非他们输入一个负整数:
import java.util.Scanner;
public class GetCircle
{
public static void main(String []args)
{
Scanner input = new Scanner(System.in);
int radius;
do {
System.out.print("Please enter size of radius (Must be integer): ");
while (!input.hasNextInt()) {
System.out.print("That is not a valid number, please try again :");
input.next();
}
radius = input.nextInt();
} while (radius < 0);
System.out.println("The radius is: " + radius);
}
}
所以这就是我得到的结果:
请输入半径大小(必须为整数):aaa
这不是有效号码,请再试一次:4.5555
这不是有效号码,请再试一次:-5
请输入半径大小(必须为整数): - 5
请输入半径大小(必须为整数): - 8.7777
这不是有效号码,请再试一次:-4
请输入半径大小(必须是整数):
**所以只要它是一个负整数,它就不会显示错误信息......
我该如何解决这个问题?
答案 0 :(得分:2)
有很多方法可以做到这一点,但对于初学者来说,最简单的方法是在if
的作业和外部的while循环结束之间添加radius
语句:< / p>
if (radius < 0) {
System.out.print("The radius must not be negative, please try again :");
}
答案 1 :(得分:1)
如果我的问题正确,那么您不需要使用!input.hasNextInt()
。这就是你如何做到的。
import java.util.Scanner;
public class GetCircle {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int radius = 0;
System.out.print("Please enter size of radius (Must be integer): ");
while (true){
if(input.hasNextInt()){
radius = input.nextInt();
if (radius < 0){
System.out.println("That is not a valid number, please try again :");
System.out.println("Please enter size of radius (Must be integer): ");
} else {
System.out.println("The radius is: " + radius);
}
} else {
System.out.println("That is not a valid number, please try again :");
System.out.println("Please enter size of radius (Must be integer): ");
input.next();
}
}
}
}