Java 退出带有';Q';
我写了一个程序来确定一个素数,我被要求使用'Q'作为退出程序的函数。下面是我写的代码。我想知道我将如何修改退出程序的方法,使其正确退出Java 退出带有';Q';,java,Java,我写了一个程序来确定一个素数,我被要求使用'Q'作为退出程序的函数。下面是我写的代码。我想知道我将如何修改退出程序的方法,使其正确退出 import java.util.Scanner; public class Practice { public static void main(String[]args) { Scanner keyboard = new Scanner(System.in); int number, i=2; String qu
import java.util.Scanner;
public class Practice
{
public static void main(String[]args)
{
Scanner keyboard = new Scanner(System.in);
int number, i=2;
String quit;
boolean prime = true;
System.out.println("Please enter a number to determine if it is prime, to quit please enter Q.");
number = keyboard.nextInt();
quit = keyboard.nextLine();
for (i=0; i<number;i++)
{
if ((number%2==0) || (number==1) || (number%3==0))
{
prime = false;
}
}
if (prime==false)
{
System.out.println(number+" is not a prime number.");
}
else if(prime==true)
System.out.println(number+" is a prime number.");
if (quit.charAt(0)=='Q')
{ System.exit(0);}
}当通过控制台的输入被指定为“Q”时,字符串类型的值被分配给int类型的变量,这是不正确的
number = keyboard.nextInt();
需要先检查输入中的类型,然后才能将其分配给int变量。您有:
number = keyboard.nextInt();
quit = keyboard.nextLine();
想一想这里到底发生了什么Q'不是一个数字,因此nextInt()
抛出一个输入不匹配异常。使用nextLine()
之后就没有什么意义了
您有两个选择:
- 使用
Scanner.hasNextInt()
确定下一个标记是否确实是格式正确的整数。如果不是,则将其作为字符串读取并检查
- 始终使用
Scanner.next()
,并在使用Integer.parseInt()
对其进行解析之前检查它是否为“Q”(准备处理其中的错误)
Scanner.next*
函数不会隐式跳过无效值。扫描器
只执行您让它执行的操作,如果您让它获取一个整数,但输入不是整数,它会理所当然地抱怨。您可以适当地使用扫描仪
,并检查可能的输入情况。您应该使用键盘.nextLine()以字符串形式读取数字;
并首先检查它是否包含“Q”。如果是,则退出,否则执行,number=Integer.parseInt(yourVariableHere);然后从那里开始试试这个:
String input;
int number = 1;
int i=2;
然后这样做:
System.out.println("Please enter a number to determine if it is prime, "
+ "\nto quit, please enter Q.");
input = keyboard.nextLine();
if (input.charAt(0)=='Q')
{
System.exit(0);
}
else
{
try
{
number = Integer.parseInt(input);
}
catch(NumberFormatException nfe)
{
System.out.println("Please enter a number or Q!");
}
}
'Q'
不是一个数字
System.out.println("Please enter a number to determine if it is prime, "
+ "\nto quit, please enter Q.");
input = keyboard.nextLine();
if (input.charAt(0)=='Q')
{
System.exit(0);
}
else
{
try
{
number = Integer.parseInt(input);
}
catch(NumberFormatException nfe)
{
System.out.println("Please enter a number or Q!");
}
}