为了使电话号码更容易记住,一些公司使用信件来显示他们的电话号码。例如,使用信件,电话号码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();
}
}
答案 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)
要忽略空格,您可以替换它们。
但是,您应该先退一步,然后将代码归结为三个主要问题:
当您组织这样的代码时,您需要解决较小的问题。如果没有评论中的进一步文档,代码的作用也很明显。最重要的是,您可以放下一些代码,因为您“忽略”了某些情况。
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;
}
}