我如何忽略空格?

时间:2017-02-25 03:33:25

标签: java

为了使电话号码更容易记住,一些公司使用信件来显示他们的电话号码。例如,使用信件,电话号码438-5626可以显示为获得贷款。 编写一个程序,提示用户输入以字母表示的电话号码,并以数字形式输出相应的电话号码。如果用户输入超过七个字母,则只处理前七个字母。在第三个数字后输出 - (连字符)。允许用户同时使用大写和小写字母以及单词之间的空格。

我不知道如何制作它以便忽略空格。 我也是编程新手,请指教,谢谢!

我键入:我喜欢java编程作为输入,但它不会忽略空格。 如果我输入java编程就没关系。第一个单词是4个字母。

import java.util.Scanner;
public class assignment1Q3{
public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    String hpletters;
    char hpdigits;

    System.out.print("\nEnter phone number in letters only: ");

    hpletters = input.nextLine();
    for(int i = 0; i < 8; i++)
    {
        hpdigits = hpletters.charAt(i);
        if(i==3)
        System.out.print("-");
        if(hpdigits >= 'A' && hpdigits <= 'Z' || hpdigits >= 'a' && hpdigits <= 'z')
        {
            switch(hpdigits)
            {
                case 'A':
                case 'a':
                case 'B':
                case 'b':
                case 'C':
                case 'c':
                    System.out.print("2");
                    break;
                case 'D':
                case 'd':
                case 'E':
                case 'e':
                case 'F':
                case 'f':
                    System.out.print("3");
                    break;
                case 'G':
                case 'g':
                case 'H':
                case 'h':
                case 'I':
                case 'i':
                    System.out.print("4");
                    break;
                case 'J':
                case 'j':
                case 'K':
                case 'k':
                case 'L':
                case 'l':
                    System.out.print("5");
                    break;
                case 'M':
                case 'm':
                case 'N':
                case 'n':
                case 'O':
                case 'o':
                    System.out.print("6");
                    break;
                case 'P':
                case 'p':
                case 'Q':
                case 'q':
                case 'R':
                case 'r':
                case 'S':
                case 's':
                    System.out.print("7");
                    break;
                case 'T':
                case 't':
                case 'U':
                case 'u':
                case 'V':
                case 'v':
                    System.out.print("8");
                    break;
                case 'W':
                case 'w':
                case 'X':
                case 'x':
                case 'Y':
                case 'y':
                case 'Z':
                case 'z':
                    System.out.print("9");
                    break;
            }
        }
    }
    System.out.println();
}
}

3 个答案:

答案 0 :(得分:0)

几乎得到了它,除了:

for(int i = 0; i < 8; i++)

你想要遍历整个输入字符串,而不仅仅是一个硬编码的8个字符(如果你的输入不包含一个空格,它就不会是这样的,这就是你似乎有硬编码的情况)。否则,如果您的输入字符串不是8个字符,则会遇到问题(您可以测试代码以自行发现这些问题)。

if(i==3)
    System.out.print("-");

在那里,i表示已处理的输入字符数,已打印的位数,如果输入包含这两个字段将不相等空间。因此,您希望在输出三位数之后找到打印连字符的方法。

答案 1 :(得分:0)

您可以删除如下所示的空白区域

String str = "i love java programming";
str = str.replace(" ", "");

答案 2 :(得分:0)

要忽略空格,您可以替换它们。

但是,您应该先退一步,然后将代码归结为三个主要问题:

  1. 您有用户输入,因此您应该对其进行验证。
  2. 您有字符,应该忽略(空格)或像其他字符(下部和上部)一样处理。
  3. 您需要使用连字符将字母转换为数字。
  4. 当您组织这样的代码时,您需要解决较小的问题。如果没有评论中的进一步文档,代码的作用也很明显。最重要的是,您可以放下一些代码,因为您“忽略”了某些情况。

    public class Assignment1Q3 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
    
            System.out.print("\nEnter phone number in letters only: ");
            String hpletters = input.nextLine();
    
            if (isValid(hpletters)) {
                String normalizedHpletters = normalize(hpletters);
                String transformedNumber = transformToNumberWithLength(normalizedHpletters, 7);
                System.out.println("The phone number is: " + transformedNumber);
            }
        }
    
        private static String transformToNumberWithLength(String hpletters, int length) {
            StringBuffer sb = new StringBuffer(length);
            for (int i = 0; i < length; i++) {
                char hpletter = hpletters.charAt(i);
                if (i == 3) {
                    sb.append("-");
                }
                if (hpletter >= 'A' && hpletter <= 'Z') {
                    switch (hpletter) {
                        case 'A':
                        case 'B':
                        case 'C':
                            sb.append("2");
                            break;
                        case 'D':
                        case 'E':
                        case 'F':
                            sb.append("3");
                            break;
                        case 'G':
                        case 'H':
                        case 'I':
                            sb.append("4");
                            break;
                        case 'J':
                        case 'K':
                        case 'L':
                            sb.append("5");
                            break;
                        case 'M':
                        case 'N':
                        case 'O':
                            sb.append("6");
                            break;
                        case 'P':
                        case 'Q':
                        case 'R':
                        case 'S':
                            sb.append("7");
                            break;
                        case 'T':
                        case 'U':
                        case 'V':
                            sb.append("8");
                            break;
                        case 'W':
                        case 'X':
                        case 'Y':
                        case 'Z':
                            sb.append("9");
                            break;
                    }
                }
            }
            return sb.toString();
        }
    
        private static String normalize(String hpletters) {
            return hpletters
                    .toUpperCase()          // only upper case
                    .replaceAll(" ", "");   // remove spaces
        }
    
        private static boolean isValid(String input) {
            if (!(input.replace(" ", "").length() > 6)) {
                System.out.println("Please enter at least 7 characters (ignoring spaces).");
                return false;
            }
    
            if (!input.matches("[A-Za-z ]+")) {
                System.out.println("Please enter letters a-z only.");
                return false;
            }
            return true;
        }
    }