Java 我怎样才能使我的程序在运行一次之后仍然运行

Java 我怎样才能使我的程序在运行一次之后仍然运行,java,Java,我写了一个干扰用户的程序。然而,它只工作一次。我希望我的程序一直运行,直到用户写入“q”或“q”。到目前为止,我写了以下内容: import java.util.Scanner; public class isbn { public static boolean validISBN(String isbnNumber) { isbnNumber = isbnNumber.replace("-", "").trim(); if (isbnNumber.len

我写了一个干扰用户的程序。然而,它只工作一次。我希望我的程序一直运行,直到用户写入“q”或“q”。到目前为止,我写了以下内容:

import java.util.Scanner;
public class isbn {
    public static boolean validISBN(String isbnNumber) {
        isbnNumber = isbnNumber.replace("-", "").trim();
        if (isbnNumber.length() == 10 && isbnNumber.matches("[0-9]+")) {
            int sum = 0;
            for(int i = 10; i > 0; i--) {
                if (isbnNumber.charAt(9) == 'X' && i == 1) {
                    sum += i * 10;
                } else {
                    sum += i * Character.getNumericValue(isbnNumber.charAt(10 - i));
                }
            }
            if (sum % 11 == 0) {
                System.out.println("Valid");
            } else {
                System.out.println("Invalid");
            }
        }
        return false;
    }
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Input ISBN Number: ");
        String isbnNumber = keyboard.next();
        validISBN(isbnNumber);
    }
} 

添加一个循环,检查用户是否输入“q”或“q”


添加一个循环,检查用户是否输入“q”或“q”


您可以使用无限循环,每次检查输入。如果输入为q或q,则断开循环

String input = null;
while(true) {
  input = keyboard.next();
  if("q".equalsIgnoreCase(input)) break;
  validISBN(isbnNumber);
}

您可以使用无限循环,每次检查输入。如果输入为q或q,则断开循环

String input = null;
while(true) {
  input = keyboard.next();
  if("q".equalsIgnoreCase(input)) break;
  validISBN(isbnNumber);
}

和其他人一样,答案说您需要使用一个等待用户输入的循环。您可以通过使用方法来实现这一点,并在
while
循环中对其求值

以下是来自Javadoc的一个片段:

如果此扫描仪的输入中有另一个令牌,则返回true。此方法在等待输入扫描时可能会阻塞。扫描仪不会超过任何输入

以下是实际执行情况:

import java.util.Scanner;
公共班机{
公共静态最终扫描仪阅读器=新扫描仪(System.in);
公共静态布尔validISBN(字符串isbnNumber){
isbnNumber=isbnNumber.replace(“-”,“”)。trim();
if(isbnNumber.length()==10&&isbnNumber.matches(“[0-9]+”))
{
整数和=0;
对于(int i=10;i>0;i--){
如果(isbnNumber.charAt(9)='X'&&i==1){
总和+=i*10;
}否则{
sum+=i*Character.getNumericValue(isbnNumber.charAt(10-i));
}
}
返回和%11==0;
}
返回false;
}
公共静态字符串getISBN(){
System.out.println(“输入ISBN编号:”);
while(READER.hasNext())
{
字符串输入=READER.next();
if(输入.相等信号情况(“q”)){
System.out.println(“退出应用程序…”);
系统出口(0);
}
else if(有效输入)){
System.out.println(“您的ISBN已被接受”);
返回输入;
}
否则{
System.out.println(“无效的ISBN编号,请重试:”);
}
}
抛出新的IllegalStateException(“用户输入流中不再有托克斯”);
}
公共静态void main(字符串[]args){
字符串isbn=getISBN();
}

}

与其他答案一样,您需要使用一个等待用户输入的循环。您可以通过使用方法来实现这一点,并在
while
循环中对其求值

以下是来自Javadoc的一个片段:

如果此扫描仪的输入中有另一个令牌,则返回true。此方法在等待输入扫描时可能会阻塞。扫描仪不会超过任何输入

以下是实际执行情况:

import java.util.Scanner;
公共班机{
公共静态最终扫描仪阅读器=新扫描仪(System.in);
公共静态布尔validISBN(字符串isbnNumber){
isbnNumber=isbnNumber.replace(“-”,“”)。trim();
if(isbnNumber.length()==10&&isbnNumber.matches(“[0-9]+”))
{
整数和=0;
对于(int i=10;i>0;i--){
如果(isbnNumber.charAt(9)='X'&&i==1){
总和+=i*10;
}否则{
sum+=i*Character.getNumericValue(isbnNumber.charAt(10-i));
}
}
返回和%11==0;
}
返回false;
}
公共静态字符串getISBN(){
System.out.println(“输入ISBN编号:”);
while(READER.hasNext())
{
字符串输入=READER.next();
if(输入.相等信号情况(“q”)){
System.out.println(“退出应用程序…”);
系统出口(0);
}
else if(有效输入)){
System.out.println(“您的ISBN已被接受”);
返回输入;
}
否则{
System.out.println(“无效的ISBN编号,请重试:”);
}
}
抛出新的IllegalStateException(“用户输入流中不再有托克斯”);
}
公共静态void main(字符串[]args){
字符串isbn=getISBN();
}

}

你需要一个循环。你需要一个循环。