[英]Java: validating if input is a certain number
驅動程序類,inputoutput類和numberValidator類。 用戶將使用j選項窗格彈出框輸入數字1-8,如果輸入的不是1-8,則應該顯示一條錯誤消息。 如果數字為1-8,則其余代碼(此處未編寫)應繼續運行。 我遇到錯誤,有人看到我錯了嗎?
///Driver class (excludes package)////
public class Driver {
public static void main(String[] args) {
InputOutput inputoutput = new InputOutput();
inputoutput.displayMenu();
}
}
///InputOutput class (excludes package and import for JOptionPane)///
public class InputOutput {
public int displayMenu()
{
String stringChoice = JOptionPane.showInputDialog("Restaurant:\n"
+ "1. Pancakes: $10.00\n"
+ "2. Bananas: $1.00\n"
+ "3. Bread: $2.00\n");
if (numberValidator.isNumeric(stringChoice)){
choiceNumber = Integer.parseInt(stringChoice);
}
return choiceNumber;
}
///numberValidator class code (excludes package)///
public class numberValidator {
public boolean isNumeric(String str)
{
boolean valid = true;
String regex = "[1-8/.]*";
valid = str.matches(regex);
return valid;
}
}
可能是您的意思是: String regex = "[1-8]\\."
-即間隔1-8中的一位數字后跟一個點?
您可以將您的正則表達式簡化為String regex = "[1-8]";
。
這意味着您的正則表達式只能接受1到8之間的數字。
問候。
編輯:
對於您的錯誤:
您從未初始化過numberValidator
因此編譯器看到要在沒有numberValidator實例的情況下訪問isNumeric方法,並看到方法isNumeric沒有關鍵字static。 這就是為什么它告訴您消息錯誤的原因。
像這樣更改您的if語句可以糾正您的問題:
if ( new numberValidator().isNumeric(stringChoice))
或將您的方法isNumeric()
靜態。
順便說一句:類別名稱必須以大寫字母開頭。
您遇到什么錯誤? 無論用戶選擇什么,它都能繼續運行嗎? 在下面的代碼中,我添加了一個else
,如果選擇的值不是數字,它將重新運行displayMenu()
方法。
public class InputOutput {
public int displayMenu()
{
String stringChoice = JOptionPane.showInputDialog("Restaurant:\n"
+ "1. Pancakes: $10.00\n"
+ "2. Bananas: $1.00\n"
+ "3. Bread: $2.00\n");
if (numberValidator.isNumeric(stringChoice)){
choiceNumber = Integer.parseInt(stringChoice);
}
else {
return displayMenu();
}
return choiceNumber;
}
但是對於您的問題,使用選項下拉列表不是更好嗎?
String[] options = new String[]{"Pancakes: $10.00","Bananas: $1.00","Bread: $2.00"}
int chosenIndex = JOptionPane.showOptionDialog(null, "Choose a menu item", "Menu", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
String chosenValue = options[chosenIndex];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.