2015-10-03 52 views
0

我剛剛看到我的一些工作今天,我想輸入用戶他們想要的字母數,並繼續轉換。我可以幫忙嗎?這將是太棒了。我嘗試了一切。我只是java編程中的新手,這就是爲什麼。謝謝:)轉換的數字

這是我的整體規劃

import java.util.Scanner; 
public class Try2 { 
    public static void main(String[] args) { 
     int counter = 0; 
     int it = 0; 
     Scanner keyboard = new Scanner(System. in); 
     System.out.println("Enter words to digits: "); 
     String alpha = keyboard.nextLine(); 
     alpha = alpha.toLowerCase(); 
     String num = (" "); 
     while (counter < alpha.length()) { 
      switch (alpha.charAt(it)) { 
       case 'A': 
       case 'a': 
       case 'B': 
       case 'b': 
       case 'c': 
       case 'C': 
        num += "2"; 
        counter++; 
        break; 
       case 'D': 
       case 'E': 
       case 'F': 
       case 'd': 
       case 'e': 
       case 'f': 
        num += "3"; 
        counter++; 
        break; 
       case 'G': 
       case 'H': 
       case 'I': 
       case 'g': 
       case 'h': 
       case 'i': 
        num += "4"; 
        counter++; 
        break; 
       case 'J': 
       case 'K': 
       case 'L': 
       case 'j': 
       case 'k': 
       case 'l': 
        num += "5"; 
        counter++; 
        break; 
       case 'M': 
       case 'N': 
       case 'O': 
       case 'm': 
       case 'n': 
       case 'o': 
        num += "6"; 
        counter++; 
        break; 
       case 'P': 
       case 'R': 
       case 'S': 
       case 'p': 
       case 'r': 
       case 's': 
        num += "7"; 
        counter++; 
        break; 
       case 'T': 
       case 'U': 
       case 'V': 
       case 't': 
       case 'u': 
       case 'v': 
        num += "8"; 
        counter++; 
        break; 
       case 'W': 
       case 'w': 
       case 'X': 
       case 'x': 
       case 'Y': 
       case 'y': 
       case 'Z': 
       case 'z': 
       case ' ': 
        num += "9"; 
        counter++; 
        break; 
      } 
      if ((counter % 4) == 3) { 
       num += "-"; 
      } 
      it++; 
     } 
     System.out.println(num); 
    } 
} 
+0

你能更好的描述你想要什麼? –

+0

你的所有角色都是小寫字母,你有兩倍的案例陳述,你真的需要。你也可以使用(alpha.charAt(it) - 'a'/ 3)+2並擺脫你的整個開關。 – ergonaut

+0

@ergonaut我認爲你的意思是'(alpha.charAt(it) - 'a')/ 3 + 2',但這不適用於所有字母。 @ J.high你在'switch'中忘記了'q' –

回答

0

您可以用另一個while環包住讀取行代碼:

​​

可以檢查用戶輸入的標誌結束輸入:

//You can choose any flag you want 
if(alpha.equals("finish")) { 
    break; 
} 

關於您的交換機:

  • 您可以刪除所有的大寫字母,因爲你寫的:alpha = alpha.toLowerCase();
  • 你忘了「Q」
  • 如果alpha不匹配:[a-zA-z ](只包含字母和空格)IndexOutOfBoundsException將從alpha.charAt(it)拋出,因爲您不會增加counter並且循環不能及時退出。

爲了防止最後一個問題,你可以刪除counterit,改變while環路for循環:

for (int i = 0; i < alpha.length(); i++) { 
    if ((i % 4) == 3) { 
     num += "-"; 
    } 
    switch (alpha.charAt(i)) { 
     ... 
    } 
} 
+0

有一個很大的問題,謝謝你的幫助,謝謝你,你糾正了我的錯誤:) –