2017-11-18 16 views
0

ユーザーがプログラムに「E」や「A」などの間違った文字を入力した場合、どのようにユーザーにメッセージを出力できますか?私のプログラムで話しているのは、P、M、またはDの3文字のうちの1文字を入力する必要があるときです。ただし、リストにない別の文字を入力すると、メッセージ。ユーザーが無効な文字を入力した場合どのようにしてユーザーにメッセージを出力するプログラムを入手できますか?

ユーザが「E」を入力した場合にわかるように、プログラムは次のステップにスキップします。しかし、ユーザにを通知し、「P、M、またはD」という正しい値を入力するように再度尋ねます

私が達成しようとしていることをするために、私はここでif文を実行する必要があると信じています。

if((i = P,M,D) && (i < ?)) { 
    System.out.println("ERROR, please input only P,M or D."); 
} 

Screenshot of the program

Javaコード

String grade; 
int yr2cred[] = new int[18]; 
char yr2grade[] = new char[18]; 
for (int i = 1; i <= 18; i++) { 
    System.out.println("Please enter your grade for unit " + i +" "+(username) + "."); 
    grade = userinput.next(); 
    yr2grade[i - 1] = grade.charAt(0); 
    if (yr2grade[i - 1] == 'P' || yr2grade[i - 1] == 'p') { 
     yr2cred[i - 1] = yr2cred[i - 1] + P; 
    } 
    if (yr2grade[i - 1] == 'M' || yr2grade[i - 1] == 'm') { 
     yr2cred[i - 1] = yr2cred[i - 1] + M; 
    } 
    if (yr2grade[i - 1] == 'D' || yr2grade[i - 1] == 'd') { 
     yr2cred[i - 1] = yr2cred[i - 1] + D; 
    } 
} 
+0

あなたはelse文を使用してみましたか? – vandale

+0

良いアイデア、私はそれについて考えなかった。私はそれが長いことを知っているが、多分私は各文字を強調表示して、そのキャラクターに入るとプログラムが何をしなければならないかを言うステートメントを行うことができた。 –

答えて

0

ためのループ内ループしているときには、を使用してこの操作を行うことができます。

for (int i = 1; i <= 18; i++) { 
    while (grade.equals("")) { 
     System.out.println("Please enter your grade for unit " + i + " " + username + "."); 
     grade = userinput.next().toLowerCase(); 
     yr2grade[i - 1] = grade.charAt(0); 
     if (yr2grade[i - 1] == 'p') { 
      yr2cred[i - 1] = yr2cred[i - 1] + P; 
     } else if (yr2grade[i - 1] == 'm') { 
      yr2cred[i - 1] = yr2cred[i - 1] + M; 
     } else if (yr2grade[i - 1] == 'd') { 
      yr2cred[i - 1] = yr2cred[i - 1] + D; 
     } else { 
      System.err.println("Invalid Grade Supplied! Try Again.\n"); 
      grade = ""; 
     } 
    } 
    grade = ""; 
} 
0

可能なコードはここにあります。ユニットごとに繰り返します。有効なユニットが入力されるまで、各ユニットはグレード値を入力します。最後に、成績のリストが印刷されます。

import java.util.Arrays; 
import java.util.Scanner; 

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

     int unitsCount = 18; 
     String[] unitGrades = new String[unitsCount]; 

     String grade; 

     Scanner userInput = new Scanner(System.in); 

     for (int i = 0; i < unitsCount; i++) { 
      grade = ""; 
      while (! (grade.equalsIgnoreCase("P") || grade.equalsIgnoreCase("M") || grade.equalsIgnoreCase("D"))) { 
       if (!"".equals(grade)){ 
        System.out.println("ERROR, please input only P,M or D."); 
       } 
       System.out.print("Please enter your grade for unit " + i + ": "); 
       grade = userInput.next(); 
      } 
      unitGrades[i] = grade; 
     } 
     System.out.println("Unit grades: "+Arrays.toString(unitGrades)); 
    } 
} 
+0

こんにちは、これを行うには時間を割いていただきありがとうございます。しかし、私は、ユーザーに通知して、「P、M、またはD」の正しい値を入力するよう再度求めます。私は完全なプログラムコードを追加し、より明確にするために説明を更新しました。もう一度ありがとう! –

+0

無効なグレードが入力されたときにエラーメッセージを出力するコードを更新しました。 – lospejos

関連する問題