2013-03-16 71 views
0

我試圖從用戶字符串(如果有數字)中獲取數字並將這些數字轉換爲其數值。我有以下用戶輸入代碼。Java讀取字符串並將字符串中的數字轉換爲整數類型

例:java Convert "55s"將只輸出數量55,我將存儲供以後使用

{ 
     char Element = 0; 
     double Sum = 0; 
     boolean Check = false; 

     for(String s: args) // taking in user input for command line 
     { 
      for (int i = 0; i<s.length(); i++) 
      { 
       Check = true; 
       Element = s.charAt(i);   // converting the string into chars 
       Sum = convert_to_numb (Element, Check); 
       Check = false; 
      } 
     } 

輸入是其中i的分離成字符,並將其發送到我的轉換功能的字符串。這個想法,我有如下

public static double convert_to_numb (char elem, boolean check) //trying to convert chars to numbers 
    { 
     char iter = elem; 
     double number = 0; 
     int count = 0; 

     while (check == true) 
     { 
      number = number + (iter - 48) * Math.pow(10,count); 
      System.out.println(iter); 
      count ++; 
     } 

    return number; 
    } 

在這裏,我在字符餵養,看看他們的數字和實際數字轉換成自己的整數值。試圖澄清我想執行以下任務給「55」的例子輸入轉換爲5 * 10^1 + 5 * 10^0 = 55.我將不勝感激任何幫助。謝謝。

+0

有一個問題,如果字符串是'「foo55bar66baz77」'你會存儲什麼? – Kent 2013-03-16 01:51:35

+0

我想要做的是本質上創建一個小型計算器,並回答你的問題生病有一個方程是什麼的想法,因爲這是一個硬件分配,所以生病的存儲55,66,77到主要單獨的變量 – Vega512 2013-03-16 01:59:57

回答

0

好的,我想我可能會知道你在做什麼,儘管其他人提到它有點不清楚。

爲了解決剛剛發佈的代碼,我認爲它不會像您期望的那樣行事。對於初學者來說,布爾變量「檢查」目前什麼都不做。 convert_to_numb僅在Check爲true時調用,所以它是多餘的。

此外,總和沒有存儲在任何地方,因爲你循環的字符串。每獲得一筆金額,它就會覆蓋前一筆。

你的convert_to_numb方法更麻煩;它包含一個無限循環。由於Check總是被設置爲'true',所以你基本上有一個永遠不會結束的while(true)循環。


我要去假設這裏你的目標是要分析哪個字符串輸入到程序尋找的連續數字組。然後你想把這些數字組作爲整數存儲起來,如果你找到多個數組,也許在一個數組中。

像這樣的事情可能會伎倆。

{ 
    ArrayList<Integer> discovered = new ArrayList<Integer>();   

    for (String s : args) { 

     // contains previous consecutive digits (if any) 
     ArrayList<Integer> digits = new ArrayList<Integer>(); 


     for (int i = 0; i < s.length(); i++) { 
      Character c = s.charAt(i); 

      // add digit to digit array 
      if (c.isDigit()) { 
       digits.add(c.getNumericValue()) 
      } 

      // not a digit, so we clear the digit array 
      else { 

       // combine the array to form an integer 
       if (! digits.isEmpty()) { 
        int sum = 0; 

        int counter = 0; 
        for (Integer i : digits) { 
         sum += i * Math.pow(10, counter); 
         counter++; 
        } 

        discovered.add(sum); 
        digits.clear(); 
       } 
      } 
     } 
    } 
} 

請注意使用ArrayLists和Integer和Character包裝類。這些都提供了有助於處理邊緣情況的功能。例如,我不確定(iter - 48)部件是否可以在所有情況下工作。

0

事情是這樣的:

public static void main(String[] args) { 
    String string = "55s"; 
    String[] piece = string.split("[\\D]+"); 
    for (int j = 0; j < piece.length; j++) { 
     if(piece[j].trim().length() > 0) { 
      System.out.println(piece[j]); 
     } 
    } 
} 

它會分裂你的初始字符串,你應該做你自己休息。