2017-09-19 11 views
-4

私は現在、コード化の方法を学んでいますが、私は少し問題に直面しています。誰かが私を助けてくれることを望んでいました。現時点では、軍事的な状況を促し、適切な値引きを示すプログラムを作成していますが、回答が指定されたオプションのいずれでもない場合はループしていきたいと思います。不正な入力でJavaをループする方法

これは私のコードです:

public static void main(String[] args) 
    { 
    char milID = ' '; 
    char status = ' '; 

    String validMilitaryID = JOptionPane.showInputDialog("Do you have a valid military ID?"); 
    milID = validMilitaryID.charAt(0); 

    Scanner valid = new Scanner(System.in); 


    if (milID == 'Y') { 
     System.out.printf("%n Are you Active Duty, Retired, or a Dependant?"); 
     status = valid.nextLine().charAt(0); 
    } else if (milID == 'y'){ 
     System.out.printf("%n Are you Active Duty, Retired, or a Dependant?"); 
     status = valid.nextLine().charAt(0); 
    }else{ 
     JOptionPane.showMessageDialog(null, "Sorry, you are currently ineligible for a Military Discount"); 
     System.exit(0); 
    } 


    if (status == 'A'){ 
     JOptionPane.showMessageDialog(null, "Congratulations! You are eligible to recieve a 15% discount!"); 
    } else if (status == 'R'){ 
     JOptionPane.showMessageDialog(null, "Congratulations! You are eligible to recieve a 13% discount!"); 
    }else if (status == 'D'){ 
     JOptionPane.showMessageDialog(null, "Congratulations! You are eligible to recieve a 10% discount!"); 
    } else { 
     JOptionPane.showMessageDialog(null, "Sorry! That was not a valid answer."); 
    } 




    System.exit(0); 
    }//END MAIN 

誰でも助けることができている場合は、あなたにもプロセスを説明することができます。私はJavaに新しいので、修正するだけではなく、学びたいと思っています。 ありがとうございます!

+0

whileループについて読む – Jens

+0

ループについて何を知っていますか? – AxelH

+0

use do ... while(式) –

答えて

0

1)あなたは

場合、多分のようなロジックから何か代わりにif..elseのスイッチを使用)、あなたの入力だけでなく、whileループ

2にあなたの場合は、コードを呼び出すことができます:

boolean checkInput = true; 
while (checkInput) { 
    // now get your input... not coded 

    switch (milId) { 
    case "y","Y": bla bla, break; 
    case "x","X": bla bla, break; 
    otherwise: bla bla, break; 
}} 

3)アカウントの値に変数を使用します。あなたは参照でこれをコード化することができます

+0

私はこれらを自分のコードに統合しましたが、何が問題なのかわかりませんが、何か間違ったことがステータスに入ったときにループを再開しません。 while(!verify); {case 'd': System.out.printf( "%nお得な割引!"、discount.get(3)); verify = false; 休憩。 デフォルト:System.err.println( "有効なステータスではありません。"); – Erwin

0

Java(または一般的なプログラミング)の不可欠な部分がコードから抜けていて、それは "whileループ"です。私はあなたが今までに持っているJavaの知識はどれくらいのものか分かりませんが、whileループは要件が満たされるまでコードブロック内の内容を繰り返します。間違った入力があった場合にサーベイを繰り返す機能を追加する場合は、条件文の最初のwhileループが必要なものです。

擬似コード

create variable called correctAnswer 
Do you have a military id? Enter y or Y if yes, any other key for no 
if yes, correctAnswer = 1 
if no, correctAnswer = 0 and while loop is skipped 

while correctAnswer = 1 
{ 
    Are you active, retired, etc? 
    If yes, what is your status? 

    if A, R, or D is given, display congrats message. correctAnswer = 0 //end 

    if anything other than A, R or D is given, then correctAnswer = 1 //repeat 
} 

正解が与えられるまで条件文の第2のブロック内のwhileループは、ループを繰り返し続けます。

関連する問題