我正在尝试制作一个从用户那里获取号码的程序,并检查号码是否为素数。我在考虑错误处理。当用户输入字符串时,程序应该给出错误消息而不是异常。我尝试了很多方法但是没有成功。你能帮助我吗?
import java.util.Scanner;
public class PrimeNumber {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int inputNum;
int remainingNum;
System.out.println("Enter a number: ");
inputNum = input.nextInt();
if(inputNum < 0){
System.out.println("Please enter a possitive number.");
}
for(int i = 2; i<=inputNum; i++) {
remainingNum = inputNum % i;
if(remainingNum == 0){
System.out.println("This number is not a prime number.");
break;
}
if(remainingNum == 1){
System.out.println("This is a prime number!");
break;
}
}
}
}
答案 0 :(得分:3)
如果用户输入非整数输入,则此行
inputNum = input.nextInt();
将抛出异常(InputMismatchException
)。 Java 处理异常的方式是通过try-catch
块:
try {
inputNum = input.nextInt();
// ... do domething with inputNum ...
} catch (InputMismatchException e) {
System.out.println("Invalid input!");
}
注意:如果您想了解有关例外的更多信息(您必须),请阅读Java tutorials。
答案 1 :(得分:0)
将它放在try-catch中,然后在catch子句中发生异常时打印你的消息......简单的事情
答案 2 :(得分:0)
如果你需要先检查输入,如果是一个数字检查是否为素数,如果它是无效的,则提示用户输入另一个输入,直到他输入有效输入为止。试试这个。
String inputString;
boolean isValid = false;
while(isValid == false){
//sysout for input
inputString = input.nextLine();
if(inputString.matches("[0-9]+")){
// check for prime
isValid = true;
}else{
//printin error
}
}
}
答案 3 :(得分:0)
感谢每一位特别是基督徒。这是最新的代码。
import java.util.InputMismatchException; import java.util.Scanner;
公共类PrimeNumber {
public static void main(String[] args) {
try {
Scanner input = new Scanner(System.in);
int inputNum;
int remainingNum;
System.out.println("Enter a number: ");
inputNum = input.nextInt();
for(int i = 2; i<=inputNum; i++) {
remainingNum = inputNum % i;
if(remainingNum == 0){
System.out.println("This number is not a prime number.");
break;
}
if(remainingNum == 1){
System.out.println("This is a prime number!");
break;
}
}
}
catch (InputMismatchException e) {
System.out.println("Invalid input!");
}
}
}