这只是我代码的一部分。所有6个变量都采用相同的结构。 (水平除外)。一旦读入,这将打印输入计算奖金。奖金应该是0为10,每个偶数高于10的累积+1和低于10的每个奇数的-1.如果输入无效输入,我该如何终止。我是否必须对所有输入使用if条件..
import java.util.Scanner;
public class Game{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int bonus,x;
double HP;
System.out.print("Enter Str : ");
int Str = sc.nextInt();
System.out.print("Enter Dex : ");
int Dex = sc.nextInt();
System.out.print("Enter Con : ");
int Con = sc.nextInt();
System.out.print("Enter Int : ");
int Int = sc.nextInt();
System.out.print("Enter Wis : ");
int Wis = sc.nextInt();
System.out.print("Enter Cha : ");
int Cha = sc.nextInt();
System.out.print("Enter Level : ");
int Level = sc.nextInt();
System.out.println("\nLevel : "+Level);
if ( Str == 10 ) {
bonus = 0;
System.out.println("Str : "+Str+"["+bonus+"]");
}
else if ( Str < 10 && Str % 2 == 0 ) {
bonus = 0 ;
for ( x = Str; x <= 10; x++ ) {
if ( x % 2 != 0 ) {
bonus = bonus + 1 ;
}
}
System.out.println("Str : "+Str+"[+"+bonus+"]");
}
else if ( Str < 10 && Str % 2 != 0 ) {
bonus = 0 ;
for ( x = Str; x <= 10; x++ ) {
if ( x % 2 == 0 ) {
bonus = bonus + 1 ;
}
}
System.out.println("Str : "+Str+"[-"+bonus+"]");
}
else if ( Str > 10 && Str % 2 == 0 ) {
bonus = 0 ;
for ( x = 10; x <= Str; x++ ) {
if ( x % 2 != 0 ) {
bonus = bonus + 1 ;
}
}
System.out.println("Str : "+Str+"[+"+bonus+"]");
}
else if ( Str > 10 && Str % 2 != 0 ) {
bonus = 0 ;
for ( x = 10; x <= Str; x++ ) {
if ( x % 2 == 0 ) {
bonus = bonus + 1 ;
}
}
System.out.println("Str : "+Str+"[-"+bonus+"]");
}
答案 0 :(得分:0)
答案 1 :(得分:0)
int Str = sc.nextInt();
如果用户输入的字符串无法解析为整数,则该行将引发异常。如果您没有捕获此异常,程序将打印回溯并中止。
每次尝试读取整数都会发生同样的事情。 如果你成功读取了整数,那么你只需要测试正确的值,如果不正确,就像其他人所说的那样,调用System.exit()来退出
答案 2 :(得分:0)
您可以在代码中改进一些内容。
您必须知道扫描程序必须在执行后关闭,但很高兴它实现了Closeable接口,因此如果您在try中打开它将自动关闭,如下所述:https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
当输入不是有效整数时,sc.nextInt()将抛出InputMismatchException,因此您可以捕获它并退出。
基本上,您可以在try-catch子句中编写代码,如下所示:
try (Scanner sc = new Scanner(System.in)){
int bonus,x;
double HP;
System.out.print("Enter Str : ");
int Str = sc.nextInt();
// here the rest of your code ...
} catch (InputMismatchException e) {
System.err.println("Error processing inputs, exiting... ");
System.exit(-1);
}
// after try/catch block scanner is closed