输入字符和数字 java,验证输入仅为字符串,数字仅为JAVA
本問題已經(jīng)有最佳答案,請猛點這里訪問。
我是一名學(xué)生,在驗證輸入方面有點問題。
String name;
System.out.println("Enter name:");
name = keyboard.nextLine();
//If name contain other than alphabetical character print an error
double number;
System.out.println("Enter number:");
name = keyboard.nextDouble();
//If number contain other than number print an error
我嘗試的是將字符串解析為double的測試,但我做不到。我不知道如何測試double是否是唯一的數(shù)字。
請告訴我該怎么做。
名稱使用regex [A-Za-z],數(shù)字使用\\d。但您不認為名稱可以包含除字母字符之外的其他字符嗎,例如空格?
@Christopher不是一個副本,因為它要求同時驗證數(shù)字和非數(shù)字輸入。但顯然關(guān)系重大。
順便說一下,我投了反對票。這個話題已經(jīng)在這個網(wǎng)站上討論了很多次,你應(yīng)該能夠通過一些先前的研究找到答案。
可以使用正則表達式檢查輸入是否與約束匹配,如下所示:
String name;
System.out.println("Enter name:");
name = keyboard.nextLine();
if (!name.matches("[a-zA-Z_]+")) {
System.out.println("Invalid name");
}
String number;
System.out.println("Enter number:");
number = keyboard.nextLine();
if (!number.matches("[0-9]+")) {
System.out.println("Invalid number");
}
。
這里有一個學(xué)習(xí)regex的好教程。
幾乎是對的-但是如果你想讓regex工作的話,你必須把這個數(shù)字讀成一個字符串。另外,您應(yīng)該正確地縮進示例代碼。
是的,你是對的。
還有"更高級"的regex解決方案。Java模式文檔
如果使用nextline()讀取兩個輸入,則可以使用此(未測試的代碼):
boolean isWordOnly = Pattern.matches("\w*", name); ? ?//name is in your code
boolean isFloatOnly = Pattern.matches("\d*.?\d*", number); ? ?//number is in your code too
現(xiàn)在,太布爾值告訴您輸入中是否有所需的格式。您可以將它添加到do-while循環(huán)或任何您想要的循環(huán)中。
開始學(xué)習(xí)Reg(ular)Ex(Presions)是一個好主意,因為它們在字符串格式中很有用(假設(shè)您必須測試輸入是否是有效的電子郵件…)。通常也用于檢查SQL注入和應(yīng)用程序和程序中的許多關(guān)鍵內(nèi)容。
你好像在用scanner。如果是,可以使用scanner類'hasNextDouble()在讀取double之前檢查輸入是否為double,如下所示:
double number;
System.out.println("Enter number:");
if (keyboard.hasNextDouble()){
name = keyboard.nextDouble();
}
查看scanner類文檔了解更多信息。
double number = 0;
try {
number = Double.parseDouble(name)
} catch (NumberFormatException ex) {
System.out.println("Name is not a double.");
}
號
如果number不是雙份的,你可以抓一份NumberFormatException。
您可以循環(huán)遍歷String的每個字符,并使用Character.isAlphabetic(char)檢查它是否不是字母:
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter name:");
String name = keyboard.nextLine();
for (char c : name.toCharArray()) {
if (!Character.isAlphabetic(c)){
System.out.println("INVALID");
break;
}
}
要只接受數(shù)字,可以使用Character.isDigit(char)函數(shù)執(zhí)行類似的操作,但請注意,必須將輸入讀取為String而不是double,或者將輸入讀取為double并使用Double.toString(d)將其轉(zhuǎn)換為String。
總結(jié)
以上是生活随笔為你收集整理的输入字符和数字 java,验证输入仅为字符串,数字仅为JAVA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php中怎么连接数据库中的表,php 连
- 下一篇: php对称字符串,PHP实现简单的对称加