0

私はJavaが初めてです。最初から開始するのではなく、ユーザー入力が間違ったタイプになった時点でコードを繰り返す必要があります。「Enter b:」または「Enter c:」の場合は、最初の「Enter a:」に戻ります。ユーザー入力がa、b、cの場合にのみ繰り返したい。前もって感謝します。

public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
boolean itsANumber = true;
while (itsANumber)
{
    System.out.print("Enter a: ");

    try
    {
    a = Double.parseDouble(sc.nextLine());

    System.out.print("Enter b: ");
    try
    {
        b = Double.parseDouble(sc.nextLine());

        System.out.print("Enter c: ");
        try
        {
        c = Double.parseDouble(sc.nextLine());
        if (a == 0)
        {
            aZero();
        } else

        {
            aNotZero();
        }

        } catch (NumberFormatException nfe) 
        {
        System.out
            .println("That's not a number, please try again!");
        }

    } catch (NumberFormatException nfe) 
    {
        System.out
            .println("That's not a number, please try again!");
    }

    } catch (NumberFormatException nfe) 
    {
    System.out.println("That's not a number, please try again!");
    }
}

}
4

2 に答える 2

3

番号を要求して 3 回呼び出すメソッドを導入します。メソッド内には、whileループがありますtry-catch

public static void main(String... args) {
   Scanner sc = new Scanner(System.in);
   double
     a = askForDouble(sc, "a"),
     b = askForDouble(sc, "b"),
     c = askForDouble(sc, "c");
}
static double askForDouble(Scanner sc, String varName) {
   for (;/*ever*/;) {
     System.out.format("Enter %s: ", varName);
     System.out.flush();
     try {
       return Double.parseDouble(sc.nextLine());
     } catch (NumberFormatExcetpion() {
       System.out.println("That's not a number, please try again!");
     }
   }
}
于 2013-01-17T09:24:04.263 に答える
0

以下のように、必要に応じて単純な null チェックを試すことができます。これは生のコードであり、変更が必要になる場合があります

Double a = null;
Double b = null;
Double c = null;
Scanner sc = new Scanner(System.in);
while(true){

    if(a != null){              
        System.out.println("Enter a :");
        a = readFromInStream(sc, "a");
            if(a == null) continue;
    }
    if(b != null){              
        System.out.println("Enter b :");
        b = readFromInStream(sc, "b");
            if(b == null) continue;
    }
    if(c != null){              
        System.out.println("Enter c :");
        c = readFromInStream(sc, "c");
            if(c == null) continue;
    }
    if(a != null && b != null && c != null){
        break;
    }
}

private Double readFromInStream(Scanner sc, String varStr){
    Double temp = null;
    try
    {
        temp = Double.parseDouble(sc.nextLine());
    }catch(NumberFormatException e){
        System.out.println("Invalid value for :"+varStr);
    }
    return temp;
}
于 2013-01-17T10:02:05.477 に答える