2015-11-22 51 views
-3

我想檢查是否String中有任何數字,如果在它沒有數字 - 打印「真」其他(有數字)打印「假」。 我的代碼是:檢查是否字符串有個數字在它

package strings; 

import java.util.Scanner; 

public class P58Targil3 { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     boolean sw1 = true; 
     String st1 = in.next(); 
     for (int i = 0; i < st1.length(); i++) { 
      if (st1.charAt(i) >= '0' && st1.charAt(i) <= 9) 
       sw1=false; 
     } 
     System.out.println(sw1); 
    } 

} 

這不是工作,我應該怎麼改?

+4

定義「不工作」。哦,9也應該是'9'。 – Tunaki

+1

嘗試將單引號添加到9 – Fawzan

+1

其他方法。不要刪除引號0.加各地9. – Shloim

回答

1

一個非常簡單的方法來檢查字符串是否具有數字在裏面,是從字符串中刪除所有的數字,然後檢查所生成的字符串是否仍然是相同的長度。

String str = "Hello123!"; 
System.out.println(str.length() != str.replaceAll("[0-9]", "").length()); 

該作品以替換所有的數字(0-9)在一無所有的字符串(空字符串),然後比較這與原來的。如果長度不同,你知道數字被刪除,所以必須有數字開頭。

要回答您的問題,您當前正在檢查索引爲i的字符的值ASCII是否大於字符值「0」或小於或等於整數9.數字(0- 9)在ASCII編碼系統中的代表與價值觀48-57以48爲0和9是57.所以,如果你想比較字符的數值的時候,你可以這樣做的條件:

if (st1.charAt(i) >= 48 && st1.charAt(i) <= 57) sw1 = false; 

但由於'0'和'9'也具有相同的值,因此您可以將它們進行比較。因此,它也可以寫成

if (st1.charAt(i) >= '0' && st1.charAt(i) <= '9') sw1 = false; 

並且也把條件會如果字符串包含數字,評價讓你真正想要初始化SW1爲false,並且如果它包含的數字將其設置爲true:

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner in = new Scanner(System.in); 
    boolean sw1 = false; 
    String st1 = in.next(); 
    for (int i = 0; i < st1.length(); i++) { 
     if (st1.charAt(i) >= 48 && st1.charAt(i) <= 57) sw1 = true; 
    } 
    System.out.println(sw1); 
} 
+0

有噸的方式做到這一點,但是這並不能回答的問題是:糾正OP的代碼,您可以添加您的變種,但之後原樣這是一條評論 – Tunaki

+0

很好的答案,我沒有學習replaceAll或數組,所以我會保持這種方式:) thx。 – DAVIDBALAS1

+1

@ DAVIDBALAS1我還添加了關於您之前的代碼發生了什麼的詳細說明。它試圖準確解釋單引號數字的含義,以及爲什麼只用這些數字來比較字符。 – kmecpp

相關問題