字符到 phone 数字转换器 java

Characters to phone numbers converter java

我如何修改程序以允许用户输入超过 1 个单词并在输出中每 4 位数字后有一个连字符?我是否在 while 循环的末尾创建另一个循环?我该怎么办?

import java.util.Arraylist;
import java.util.list;
import java.util.Scanner;
{     public static void main (String[] args)     
     {     
       Scanner  console = new Scanner(System.in);
        List<String> input = new ArrayList<String>();
        String line = console.nextLine();
        while(!line.equals("")) {
        input.add(line);
        line = console.nextLine();
 }
        for(String Letter: input)
        {       
            System.out.println("Enter the a word to be converted : ");
            String Letter = console.nextLine();
            Letter = Letter.replaceAll("\s", "");
            Letter = Letter.toLowerCase();
            String  Number="";
            int count=0;
            int  i=0;

 while(count < Letter.length())       
{

  switch(Letter.charAt(i))        {
           case 'A':case 'B':case 'C': case 'a': case 'b': case 'c':                  

                    Number += "2";
                    count++;
                    break;
                    case 'D':case 'E':case 'F': case 'd': case 'e': case 'f':                Number += "3";
                    count++;
                    break;
                    case 'G':case 'H':case 'I': case 'g': case 'h': case 'i':               Number += "4";
                    count++;
                    break;
                    case 'J':case 'K':case 'L': case 'j': case 'k': case 'l':               Number += "5";
                    count++;
                    break;
                    case 'M':case 'N':case 'O': case 'm': case 'n': case 'o':           Number += "6";
                    count++;
                    break;
                    case 'P':case 'R':case 'S': case 'p': case 'r': case 's':               Number += "7";
                    count++;
                    break;
                    case 'T':case 'U':case 'V': case 't': case 'u': case 'v':              Number += "8";
                    count++;
                    break;
                    case 'W':case 'X':case 'Y':case 'Z': case 'w': case 'x': case 'y': case 'z':          Number += "9";
                    count++;
                    break;
                }
                if(  count==3) {        Number += "-";
                }
                i++;
            }
            System.out.println( Number );
        }
    }
}

现在输出

 Enter the word to be converted :
 callhome
 225-54663

预期输出

 Enter the words to be converted :
 callhome
 hereherehereherehere
 comecomecomecomecome

 225-5466-3
 437-3437-3437-3437-3437-3
 266-3266-3266-3266-3266-3

请更新代码如下:

if(  count==3) 
 Number += "-";

if(count>4 && ((count+1)%4)==0)
 Number += "-";

在循环中使用console.nextLine()将所有单词放入一个数组列表中。然后你可以遍历数组列表来执行逻辑。对代码的多条评论:

  1. 您正在将单词转换为大写,然后再转换为小写。您的开关不需要同时查找大小写。
  2. 您正在检查 count==3 以添加“-”。同样,您可以使用 (count-3)%4 == 0 查看是否在第 4 个字符边界。
  3. 您不需要也检查“1”吗?

这是将输入输入数组列表的方法。

List<String> input = new ArrayList<String>();
String line = console.nextLine();
while(!line.equals("")) {
    input.add(line);
    line = console.nextLine();
}

完成后,您可以按如下方式遍历数组:

for(String Letter: input) {
  // Whole of your code goes here.
}

注意语法错误。我直接在浏览器里输入