【发布时间】:2016-10-20 00:02:22
【问题描述】:
我已经被困了很长时间了。我需要忽略输入的数字、空格和特殊字符,如 $^%##&!并使用 Character.isDigit 和 Character.isLetter 阅读其他字母 a-z。我尝试过使用这两种方法,但对我来说都没有效果。请指教..
错误:
正常输出(不含空格和数字):
即使我输入了 123$@GetLoan.. 预期的输出也应该是 438-5626.. 他们应该忽略前几个字符 '123$@' 并且只读取 GetLoan..
完整问题:编写一个程序,提示用户输入以字母表示的电话号码,并以数字形式输出对应的电话号码。如果用户输入的字母多于七个,则只处理前七个字母。在第三个数字后输出 –(连字符)。允许用户同时使用大写和小写字母以及单词之间的空格。
public class Question3 {
public static void main(String[] args) {
String letters;
char phoneDigit;
Scanner kb = new Scanner(System.in);
System.out.println("Enter letters : ");
letters = kb.next();
for (int i = 0; i < 7; i++) {
phoneDigit = letters.charAt(i);
if (Character.isLetter(phoneDigit) == true) {
if (i == 3) {
System.out.println("-");
} //If
if (phoneDigit >= 'A' && phoneDigit <= 'C'
|| phoneDigit >= 'a' && phoneDigit <= 'c') {
System.out.println("2");
} else if (phoneDigit >= 'D' && phoneDigit <= 'F'
|| phoneDigit >= 'd' && phoneDigit <= 'f') {
System.out.println("3");
} else if (phoneDigit >= 'G' && phoneDigit <= 'I'
|| phoneDigit >= 'g' && phoneDigit <= 'i') {
System.out.println("4");
} else if (phoneDigit >= 'J' && phoneDigit <= 'L'
|| phoneDigit >= 'j' && phoneDigit <= 'l') {
System.out.println("5");
} else if (phoneDigit >= 'M' && phoneDigit <= 'O'
|| phoneDigit >= 'm' && phoneDigit <= 'o') {
System.out.println("6");
} else if (phoneDigit >= 'P' && phoneDigit <= 'S'
|| phoneDigit >= 'p' && phoneDigit <= 's') {
System.out.println("7");
} else if (phoneDigit >= 'T' && phoneDigit <= 'V'
|| phoneDigit >= 't' && phoneDigit <= 'v') {
System.out.println("8");
} else if (phoneDigit >= 'W' && phoneDigit <= 'Z'
|| phoneDigit >= 'W' && phoneDigit <= 'z') {
System.out.println("9");
} // If
} // If
} // For loop
} //PSVM
【问题讨论】:
-
请不要使用截图显示错误信息,在问题描述中正常输入。
-
还要说明它是如何不工作的,预期的输出是什么以及输入是什么。
标签: java string if-statement character letter