簡體   English   中英

如果用戶輸入了無效字符,我如何使我的程序向用戶輸出消息?

[英]If a user inputs an invalid character how can I get my program to output a message to the user?

如果用戶在程序中輸入了錯誤的字符,例如“ E”或“ A”,如何向用戶輸出消息? 我在程序中所說的那行是用戶必須選擇輸入三個字符P,M或D中的一個。但是,如果用戶輸入了另一個未列出的字符,我希望程序顯示一個消息。

如您所見,如果用戶輸入“ E”,程序將跳至下一步。 但是,我希望通知用戶並再次要求輸入正確的值“ P,M或D”

為了做到我想要達到的目標,我相信我需要做一個if語句,所以在這里我已經嘗試了。

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

程序截圖

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;
    }
}

可能的代碼在這里。 我們以單位為單位進行迭代,對於每一個單位,我們要求輸入等級值,直到輸入有效的等級值為止。 最后會列出成績列表。

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));
    }
}

您可以在for循環中使用while循環進行此操作:

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 = "";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM