2016-06-29 6 views
0

私は、三角形の斜辺を決定する基本的なJavaプログラムを作成しました。もともと、プログラムはA面を求めてからB面を求め、自動的に斜辺を計算します。コードの別の部分を実行するために入力コマンドを作成するにはどうすればよいですか? - Java

A面の値を入力するときに「a」と入力し、B面の値を入力するときに「b」と入力してから「c」を入力すると入力可能な入力コマンドリストを作成します。斜行、または "q"を入力してプログラムを終了します。

最初にサイドAを入れるように強制するのではなく、そこに両方の​​サイドに置くことができるようにします。しかし、ユーザーが "c"を入力してAまたはBの値が欠落している(またはその両方)場合は、エラーメッセージが表示され、ユーザーに修正されます。

は、これまでのところ私は

import java.util.InputMismatchException; 
import java.util.Scanner; 


public class handleExceptions1 { 
    public static void main(String[] args) { 

     Scanner initial = new Scanner(System.in); 
     System.out.println(" Type 'a' to enter the value for side A.\n Type 'b' to enter the value for side B.\n Type 'c' to calculate the hypotenuse.\n Or type 'q' to exit"); 
     String inputselected = initial.next(); 

     boolean repeat = true; 
     double _sideA = 0; 
     while (repeat) { 
      try { 
       Scanner input = new Scanner(System.in); 
       System.out.print("Please enter side A, this may not be 0: "); 
       _sideA = input.nextDouble(); 
       if (_sideA > 0){ 
        repeat = false; 
       } 
      } catch (InputMismatchException e) { 
       System.out.print("Error! Please enter a valid number!"); 
      } 
     } 
     boolean repeat2= true; 
     double _sideB = 0; 
     while (repeat2){ 
      try { 
       Scanner input = new Scanner(System.in); 
       System.out.print("Please enter side B, this may not be 0: "); 
       _sideB = input.nextDouble(); 
       if (_sideB > 0){ 
       repeat2= false; 
       } 
      } catch (InputMismatchException e) { 
       System.out.print("Error! Please enter a valid number!"); 
      } 
     } 
     double hypotenuse = Math.sqrt((_sideA*_sideA) + (_sideB*_sideB)); 
     System.out.print("Side C(the hypotenuse) is: "+ hypotenuse); 

    } 



} 

私のロジックは、「文字列inputselected = ...」の後に何かを置くことですが、私はよく分からないです。誰かが私を助けることができれば、それは非常に高く評価されるでしょう!

答えて

1
sideA = -1; 
sideB = -1; 
Scanner input = new Scanner(System.in); 
do 
{ 
    System.out.println("Enter your choice (a/b/c/q) : "); 
    char ch = in.nextChar(); 
    switch(ch) 
    { 
     case 'a': sideA = in.nextDouble(); 
        if(sideA<0) 
        System.out.println("Error! Please enter a valid number!"); 
        break; 
     case 'b': sideB = in.nextDouble(); 
        if(sideB<0) 
        System.out.println("Error! Please enter a valid number!"); 
        break; 
     case 'c': if(sideA<0 || sideB<0) 
        System.out.println("Other two sides not yet given! please provide a and b first. "); 
        else 
        System.out.print("Side C(the hypotenuse) is: "+ Math.sqrt((_sideA*_sideA) + (_sideB*_sideB));); 

        break; 
     case 'q': break; 
     default : System.out.println(" Enter a valid choice! "); 
    } 
}while(ch!='q'); 
関連する問題