2013-10-16 68 views
0

我試圖將其從輸入框更改爲Scanner類,但我在這樣做時遇到問題。從輸入更改爲掃描儀

其中一個程序,需要的話,並把它們成爲一個電話號碼在這裏是這樣做的代碼。任何幫助將不勝感激,如果有什麼我可以做的回報,我會很樂意這樣做。

// declare imports 
import java.util.Scanner; 
import javax.swing.JOptionPane; 
import java.util.*; 
public class Telephone { 
    public static void main(String[] args) { 
     // ask for the phone number (in letters) 
     char letter; 
     String inputMessage = "Please enter the number in Letters " + "or enter '#' to stop the program "; 
     String inputString = JOptionPane.showInputDialog(inputMessage); 
     String outputString = ""; 
     String outputMessage = ""; 
     int digit = 0; 
     int x = 0; 
     for (int i = 0; i < inputString.length(); i++) 
     System.out.print(inputString.charAt(x)); { 
      while (inputString.charAt(x) != '#') { 
       letter = Character.toUpperCase(inputString.charAt(x)); 
       x++; 
       // make sure its not a number 
       if (letter >= 'a' && letter <= 'z') if (letter >= 'A' && letter <= 'Z') { 
        digit++; 
        switch (letter) { 
         case 'A': 
         case 'B': 
         case 'C': 
          outputString += "2"; 
          break; 
         case 'D': 
         case 'E': 
         case 'F': 
          outputString += "3"; 
          break; 
         case 'G': 
         case 'H': 
         case 'I': 
          outputString += "4"; 
          break; 
         case 'J': 
         case 'K': 
         case 'L': 
          outputString += "5"; 
          break; 
         case 'M': 
         case 'N': 
         case 'O': 
          outputString += "6"; 
          break; 
         case 'P': 
         case 'Q': 
         case 'R': 
         case 'S': 
          outputString += "7"; 
          break; 
         case 'T': 
         case 'U': 
         case 'V': 
          outputString += "8"; 
          break; 
         case 'W': 
         case 'X': 
         case 'Y': 
         case 'Z': 
          outputString += "9"; 
        } 
        if (digit == 7) { 
         break; 
        } 
        if (digit == 3) { 
         outputString += "-"; 
        } 
       } 
       inputMessage = "Enter another set of telephone letters"; 
      } 
      JOptionPane.showMessageDialog(null, outputString, "Telephone Program", JOptionPane.PLAIN_MESSAGE); 

     } 
+3

你爲什麼不嘗試縮進代碼?它確實有助於可讀性... – ChristopheD

+0

歡迎來到SO。請閱讀[常見問題]和[問]以獲得編寫好問題的提示。首先,SO不是一個論壇,您可以在其中提出「幫助我改進我的代碼」等不重要的問題,或者「告訴我什麼是錯誤的」,而不提供代碼本身以外的任何細節。請告訴我們您遇到的問題,並顯示您迄今爲止解決問題所做的工作。 –

+0

順便說一句:也許你會考慮使用字符的ascii值來避免大規模切換的情況。 'A'是65,'B'66等等。除最後一個區塊外,其餘所有區塊都是3 ..(v-65)/ 3)+2或somethinkg都應該爲最後區塊之外的所有區塊都返回正確的數字。 – LostAvatar

回答

1

修改,你顯示的JOptionPane如下行,

//String inputString = JOptionPane.showInputDialog(inputMessage); 
System.out.println(inputMessage); 
Scanner sc = new Scanner(System.in); 
String inputString = sc.nextLine(); 

,所以你能做到以下幾點,

package test; 

import java.util.Scanner; 

public class Telephone { 

    public static void main(String[] args) { 
     // ask for the phone number (in letters) 
     char letter; 
     String inputMessage = "Please enter the number in Letters " + "or enter '#' to stop the program "; 
//  String inputString = JOptionPane.showInputDialog(inputMessage); 

     System.out.println(inputMessage); 
     Scanner sc = new Scanner(System.in); 
     String inputString = sc.nextLine(); 

     String outputString = ""; 
     String outputMessage = ""; 
     int digit = 0; 
     int x = 0; 
     for (int i = 0; i < inputString.length(); i++) { 
      System.out.print(inputString.charAt(x)); 
     } 

     while (inputString != null && inputString.trim().length() > 0 && inputString.charAt(x) != '#') { 
      letter = Character.toUpperCase(inputString.charAt(x)); 
      x++; 
      // make sure its not a number 
//    if (letter >= 'a' && letter <= 'z') { 
      if (x >= inputString.length()) { 
       x = 0; 
       System.out.println("\n" + outputString); 
//    JOptionPane.showMessageDialog(null, outputString, "Telephone Program", JOptionPane.PLAIN_MESSAGE); 
//    inputString = JOptionPane.showInputDialog(inputMessage); 
       System.out.println(inputMessage); 
       inputString = sc.nextLine(); 
      } else if (letter >= 'A' && letter <= 'Z') { 
       digit++; 
       switch (letter) { 
        case 'A': 
        case 'B': 
        case 'C': 
         outputString += "2"; 
         break; 
        case 'D': 
        case 'E': 
        case 'F': 
         outputString += "3"; 
         break; 
        case 'G': 
        case 'H': 
        case 'I': 
         outputString += "4"; 
         break; 
        case 'J': 
        case 'K': 
        case 'L': 
         outputString += "5"; 
         break; 
        case 'M': 
        case 'N': 
        case 'O': 
         outputString += "6"; 
         break; 
        case 'P': 
        case 'Q': 
        case 'R': 
        case 'S': 
         outputString += "7"; 
         break; 
        case 'T': 
        case 'U': 
        case 'V': 
         outputString += "8"; 
         break; 
        case 'W': 
        case 'X': 
        case 'Y': 
        case 'Z': 
         outputString += "9"; 
       } 
       if (digit == 7) { 
        break; 
       } 
       if (digit == 3) { 
        outputString += "-"; 
       } 
      } 
//    } 
      inputMessage = "Enter another set of telephone letters"; 
     } 
     System.out.println("\n" + outputString); 
//  JOptionPane.showMessageDialog(null, outputString, "Telephone Program", JOptionPane.PLAIN_MESSAGE); 

    } 
} 
+0

當我用修改代替它並運行程序時,我得到了CCCCCCCCC作爲輸出 – Supdawg

+0

對不起,我認爲它按照你的想法工作。我用一個完整的工作示例編輯答案,顯示我認爲你想要的。 – melc