1

私はプログラミングに非常に慣れていません。特定の形状から領域を操作するためのアプリを作成しました。

必要に応じてAreaCalculations別のクラスで提供できますが、それは正常に機能します。

私の問題は、ユーザーが double ではなく文字を入力したタイミングを確認することです。私のコードからわかるように、while ループと(!reader.NextDouble()).

これは機能しますが、質問を繰り返す必要があります。プログラム全体でこれを行うことができますが、これを行うためのより簡単で整頓された方法はありますか?

ありがとう、

クレイグ

これまでの私のコード:

package areaprog;

import java.util.Scanner;

public class Mainprog {


public static void main (String [] args){

    //Area Menu Selection
    System.out.println("What shape do you need to know the area of?\n" +
    "1: Square?\n" +
    "2: Rectangle?\n" +
    "3: Triangle?\n" +
    "4: Circle? \n" +
    "5: Exit\n"     
    );

    //User input for menu

    Scanner reader = new Scanner(System.in);
    System.out.println("Number: ");

    //Menu syntax checking
    while (!reader.hasNextDouble())
    {
        System.out.println("Thats not a number you tool.\n");
        System.out.println("Now pick again\n" +
                "1: Square?\n" +
                "2: Rectangle?\n" +
                "3: Triangle?\n" +
                "4: Circle? \n" +
                "5: Exit\n"     
                );

        reader.next(); //ask for next token?        
    }               
        double input = reader.nextDouble();
        reader.nextLine();



    //Depending on user selection, depends on what method is called using switch.
Scanner scan = new Scanner(System.in);

    //Square selection
    if (input == 1){
        System.out.println("What is a length of 1 side of the Square?\n");
            double s1 = scan.nextDouble();
            double SqAns = AreaCalculator.getSquareArea(s1);
            System.out.println("The area of you square is: " + SqAns);

                   }

    //Rectangle selection    
        if (input == 2){
        System.out.println("What is the width of your rectangle?.\n");
            double r1 = scan.nextDouble();
        System.out.println("What is the height of your rectangle?\n");
            double r2 = scan.nextDouble();
            double RecAns = AreaCalculator.getRectArea(r1, r2);
        System.out.println("The area of your rectangle is: " + RecAns);    
        }
    //Triangle selection
    if (input == 3){
        System.out.println("What is the base length of the triangle?.");
            double t1 = scan.nextDouble();
        System.out.println("What is the height of your triangle?");
            double t2 = scan.nextDouble();
            double TriAns = AreaCalculator.getTriArea(t1, t2);
        System.out.println("The area of your triangle is " + TriAns);
    }
    //Circle selection
    if (input == 4){
        System.out.println("What is the radius of your circle?.");
            double c1 = scan.nextDouble();
            double CircAns = AreaCalculator.getCircleArea(c1);
        System.out.println("The area of your circle is " + CircAns);    

    }
    //Exit application
    if (input == 5){
        System.out.println("Goodbye.");

    }


}

}

わかりましたので、エラーをキャッチするために例外を追加しました。そのため、整数を使用していない人を処理する方法が少しきれいになりました。

数: 1 正方形の 1 辺の長さは?

a なぜあなたは賢くなろうとするのですか? 整数を使用します。

しかし、その後、プログラムは終了します....どうすればメインメニューに戻るか、最後の努力を再入力させることができますか?

ありがとう、

クレイグ

4

1 に答える 1

0

メニュー方式のプログラムに関する限り、それはうまくいきます。しかし、あなたが言ったように、 「これは機能しますが、それから私は質問を繰り返さなければなりません。」

したがって、Javaでの例外処理チュートリアルを読んでください

したがって、コードは次のようになります。

    try
   {
    System.out.println("Thats not a number you tool.\n");
    System.out.println("Now pick again\n" +
            "1: Square?\n" +
            "2: Rectangle?\n" +
            "3: Triangle?\n" +
            "4: Circle? \n" +
            "5: Exit\n"
            );


input = reader.nextDouble();
 }
   catch(InputMismatchException err)
    {
  System.out.print(err.getMessage());

     }

インポートすることを忘れないでimport java.util.InputMismatchExceptionくださいimport java.util.*

そして、tryブロックの外で変数を宣言してみてください。外には見えないかもしれません。

于 2013-01-15T09:17:30.150 に答える