Java异常错误导致代码突然停止
Java exception error causing code to stop suddenly
我正在为 class 做一个项目,一切正常,直到教授给我们的代码会提示用户 "doOver" 如果他们愿意,代码会出现这个错误,坦率地说我很困惑。
我尝试将 sc.nextLine 更改为我在其他帖子中看到的 .hasNextLine,但它出现了一个错误,指出它需要是一个布尔值,然后说我不能使用下一个doOver.trim() 布尔值代码。
final static String TITLE = "ISBN-13 Generator!";
final static String CONTINUE_PROMPT = "\nDo this again? [y/n] ";
static Scanner input = new Scanner(System.in);
private static void process(Scanner sc, String args[]) {
boolean numberChecker;
String isbn;
do {
System.out.println("\nEnter the first 12 digits of an ISBN-13: ");
isbn = input.nextLine();
input.close();
isbn = isbn.trim();
numberChecker = true;
int s = 0;
do {
numberChecker = numberChecker && Character.isDigit(isbn.charAt(s));
s++;
} while (s < isbn.length() || numberChecker == false);
} while (isbn.length() != 12 & numberChecker == false);
int sum = 0;
int s = 0;
do {
if (s % 2 == 0) {
sum = sum + isbn.charAt(s) - 48;
} else {
sum = sum + 3 * (isbn.charAt(s) - 48);
}
s++;
} while (s < 12);
{
sum = 10 - (sum % 10);
if (sum == 10)
sum = 0;
}
System.out.println("Your ISBN is " + isbn + sum);
}
private static boolean doThisAgain(Scanner sc, String prompt) {
System.out.print(prompt);
String doOver = sc.nextLine();
return doOver.trim().equalsIgnoreCase("Y");
}
public static void main(String args[]) {
System.out.println("Welcome to " + TITLE);
Scanner sc = new Scanner(System.in);
do {
process(sc, args);
} while (doThisAgain(sc, CONTINUE_PROMPT));
sc.close();
System.out.println("Thank you for using the " + TITLE);
}
它应该显示 "Do this again? [y/n]" 你输入 "y" 重新开始这个过程,输入 "n" 停止并让系统打印出来 ("Thank you for using the " + TITLE)
发生这种情况是因为您已经使用行 input.close();
关闭了扫描仪实例
只需注释掉或删除 input.close();,您的程序就会按预期运行。
System.out.println("\nEnter the first 12 digits of an ISBN-13: ");
isbn = input.nextLine();
//input.close();
如果有帮助请告诉我! :)
我正在为 class 做一个项目,一切正常,直到教授给我们的代码会提示用户 "doOver" 如果他们愿意,代码会出现这个错误,坦率地说我很困惑。
我尝试将 sc.nextLine 更改为我在其他帖子中看到的 .hasNextLine,但它出现了一个错误,指出它需要是一个布尔值,然后说我不能使用下一个doOver.trim() 布尔值代码。
final static String TITLE = "ISBN-13 Generator!";
final static String CONTINUE_PROMPT = "\nDo this again? [y/n] ";
static Scanner input = new Scanner(System.in);
private static void process(Scanner sc, String args[]) {
boolean numberChecker;
String isbn;
do {
System.out.println("\nEnter the first 12 digits of an ISBN-13: ");
isbn = input.nextLine();
input.close();
isbn = isbn.trim();
numberChecker = true;
int s = 0;
do {
numberChecker = numberChecker && Character.isDigit(isbn.charAt(s));
s++;
} while (s < isbn.length() || numberChecker == false);
} while (isbn.length() != 12 & numberChecker == false);
int sum = 0;
int s = 0;
do {
if (s % 2 == 0) {
sum = sum + isbn.charAt(s) - 48;
} else {
sum = sum + 3 * (isbn.charAt(s) - 48);
}
s++;
} while (s < 12);
{
sum = 10 - (sum % 10);
if (sum == 10)
sum = 0;
}
System.out.println("Your ISBN is " + isbn + sum);
}
private static boolean doThisAgain(Scanner sc, String prompt) {
System.out.print(prompt);
String doOver = sc.nextLine();
return doOver.trim().equalsIgnoreCase("Y");
}
public static void main(String args[]) {
System.out.println("Welcome to " + TITLE);
Scanner sc = new Scanner(System.in);
do {
process(sc, args);
} while (doThisAgain(sc, CONTINUE_PROMPT));
sc.close();
System.out.println("Thank you for using the " + TITLE);
}
它应该显示 "Do this again? [y/n]" 你输入 "y" 重新开始这个过程,输入 "n" 停止并让系统打印出来 ("Thank you for using the " + TITLE)
发生这种情况是因为您已经使用行 input.close();
关闭了扫描仪实例只需注释掉或删除 input.close();,您的程序就会按预期运行。
System.out.println("\nEnter the first 12 digits of an ISBN-13: ");
isbn = input.nextLine();
//input.close();
如果有帮助请告诉我! :)