2017-06-16 15 views
2

我的意思是說,如果我有一個由空格分隔的數組,我怎麼能區分兩個連續的字符是兩個還是更多的數字呢? 和我在一起我對編程一般還很陌生。如何識別char條目是否爲兩位或更多位數字?

這是我到目前爲止有:

import java.util.*; 
    public class calc 
    { 
     public static String itemList; 
     public static String str; 
     public static void main(String[] args) 
     { 
      Scanner sc = new Scanner(System.in); 
      str = sc.nextLine(); 
      delimitThis(); 
      sc.close(); 
     } 
     public static void delimitThis()// Delimiter to treat variable and     numbers as seperate 
     { 
      List<String> items = Arrays.asList(str.split("\\s+")); 
      System.out.println(items); 

      for (int i = 0; i < str.length(); i++) 
      { 
        itemList = items.get(i); 
        category(); 

      } 
     } 
     public static void category()////For Filtering between vars and constants and functions 
     { 
      for (int x = 0; x < itemList.length(); x++) 
      { 
       char ite = itemList.charAt(x); 
     if(Character.isDigit(ite)) 
     { 
      System.out.println(ite + "is numeric"); //Will be replaced by setting of value in a 2 dimensional list 
      } 
     } 
    } 
+0

究竟什麼想和做delimitThis()函數? –

+0

我想製作一個代數表達式計算器,在開始進行變量和函數管理之前,我已經準備好了。 – cosmicXD

+0

「如果char條目是兩位或更多位的數字?_」您的意思可能是'String'。我建議你使用正則表達式一次獲取下一個數字字符串。 – AxelH

回答

1

首先,我想修復自己的錯誤:

錯誤1:

// bad 
for (int i = 0; i < str.length(); i++) 
{ 
    itemList = items.get(i); 
    category(); 
} 

您通過List<String> items穿越,但正在使用str.length。這是錯誤的。要在items {打印項目然後做category()}爲每個項目,代碼應該是:

// fixed 
for (int i = 0; i < items.size(); i++) 
{ 
    itemList = items.get(i); 
    category(); 
} 

錯誤2:

for (int x = 0; x < itemList.length(); x++) 
{ 
    System.out.println(itemList); 
} 

我不知道你想什麼在這裏做。只是你的代碼對我沒有意義。我假設你想從itemList每個字符打印,代碼應該是這樣的:

for (int x = 0; x < itemList.length(); x++) 
{ 
    System.out.println(itemList.charAt(x)); 
} 

完成配合失誤。現在正在檢查一個字符串是否包含2位數以上,我們可以使用String.matches()regular expression

if(itemList.matches("\\d\\d+")){ 
    System.out.println(itemList + " is a two or more digit number"); 
}else{ 
    System.out.println(itemList + " is NOT a two or more digit number"); 
} 

的代碼看起來像這樣的結尾:

import java.util.*; 
public class Calc 
{ 
    public static String itemList; 
    public static String str; 
    public static void main(String[] args) 
    { 
     Scanner sc = new Scanner(System.in); 
     str = sc.nextLine(); 
     delimitThis(); 
     sc.close(); 
    } 
    public static void delimitThis()// Delimiter to treat variable and numbers as seperate 
    { 
     List<String> items = Arrays.asList(str.split("\\s+")); 
     System.out.println(items); 

     for (int i = 0; i < items.size(); i++) 
     { 
      itemList = items.get(i); 
      category(); 
     } 
    } 
    public static void category()////For Filtering between vars and constants and functions 
    { 
     for (int x = 0; x < itemList.length(); x++) 
     { 
      System.out.println(itemList.charAt(x)); 
     } 

     // is 2 digit number or not? 
     if(itemList.matches("\\d\\d+")){ 
      System.out.println(itemList + " is a two or more digit number"); 
     }else{ 
      System.out.println(itemList + " is NOT a two or more digit number"); 
     } 
    } 
} 
0

要檢查字符串是否至少有2位數字,使用這個表達式:\d{2,}

public static boolean is2OrMoreDigits(String s) { 
    Pattern p = Pattern.compile("\\d{2,}"); 
    return o.matcher(s).matches(); 
} 
相關問題