2017-02-17 9 views
0

私はJavaを初めて使い、自分の能力を最大限に生かすことができます。私は試験のスコアを取ってそれを文字の等級に変換する課題に取り組んでいます。私はそれのコードを書いても何の問題もなく、実際にはうまくいきます。ループバックと文字入力を追加

import java.util.Scanner; 
public class grades { 
    public static void main(String[] args) {  
     Scanner input = new Scanner(System.in); 
     byte Score; 
     Scanner keyboard = new Scanner(System.in); 
     //Start program 
     System.out.println("Welcome to the automated grading system!"); 
     { 
      System.out.println("Please enter your exam score from 0-100. Press 'E' to Exit"); 
     } 
     Score = input.nextByte(); 
     { 
     if(Score >= 90 && Score <= 100) { 
      System.out.println("Your Grade is an A."); 
     } else if (Score >= 80 && Score <= 89) { 
      System.out.println("your Grade is a B."); 
     } else if (Score >= 70 && Score <= 79) { 
      System.out.println("Your Grade is a C."); 
     } else if (Score >= 60 && Score <= 69){ 
       {System.out.println("Your Grade is a D.");}   
     }else if (Score < 50){{ 
      System.out.println("Your Grade is a F.");} 
     }} 
    } 
} 

私は苦労している問題は、ユーザーが数字の代わりに文字「E」を入力したことです。私が持っているものに加えてそれをどのように追加するのですか?また、私はプログラムをループバックして、一度最初に数字を入力してみようとしていますが、最初のメッセージは何度も繰り返されています。
だから私はそれを実現する方法を知る必要があります。
私はブール値を確立しなければならないことは知っていますが、while文をどこに置くべきかはわかりません。

+3

なぜたくさんの不要なブロックがあるのですか? – Li357

+0

'input.nextByte()'を使う代わりに(例えば10101のような入力がないと失敗する) '.next()'を使って文字列として読み込み、文字列が "Eそうでない場合は数字として解析し、数値でないか数値ではあるが範囲外であればエラー出力を出してください。 – alfasin

+0

申し訳ありませんが、Andrew Li、私はこのすべてを新しくしており、すべてを理解するために最善を尽くしています。 –

答えて

1

私は苦労している問題は、ユーザーが数字の代わりに文字「E」を入力したことです。

バイトの代わりに文字列を読み取ることができます。実際に必要なときに文字列を整数に変換します。

また、私は戻ってプログラムループを作り、私はしばらくの間、真を試してみて、必要なときに壊れる数

に入ると、最初からやり直すしようとしています。

私は、ブールが、どこ繰り返したいすべての周り

でwhile文を入れてわからないを確立する必要があります知っています。例えば

Scanner sc = new Scanner(System.in); 
String input = ""; 
while (true) { 
    System.out.println("Please enter your exam score from 0-100. Press 'E' to Exit"); 
    input = sc.next(); 
    if (input.equals("E")) break; // exit loop 

    int score = Integer.parseInt(input); 
    // check score 

} 
+0

私は実際には 'while(true)'になるように 'while(true)'の条件を変更するか、 'input.equals(" E ")'を繰り返すごとに2回チェックしない通常のwhileループを好むでしょう。 – alfasin

+0

私が持っていたようにするのは理にかなっていますが、あなたは良い点を作ってくれます。 –

+0

ありがとう、私はそれを働かせることができたし、 'E'または 'e'が入力されるとプログラムは終了します。 「e」が入力された後、終了する前にコードを置くことができるステートメントがあるかどうかを調べようとしています。再度、感謝します! –

0

.next()はありますが、あなたがcharとint型の間で切り替えたい場合は、必要な型に変換することができますから、入力された次の文字を読み込みます。プログラムがループバックするようにするには、ループの外側にある "choice"変数を初期化して、do whileループを実行します。条件はループバックに使用する入力と同じです。

関連する問題