读取用户的输入并忽略单词之间的空格,将字母转换为电话号码



我一直在尝试弄清楚当用户输入字符串时如何使用character.isDigit和character.isLetter方法忽略空格/数字/字母。你们能告诉我吗?

当我尝试使用 GETLOAN 输入(没有空格)时,它运行良好...... 但是当我在 e.g. 获取贷款,程序显示错误。

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);
// Using character.isDigit...
if (Character.isDigit(phoneDigit) == true || 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

从这里删除分号(;)

if (Character.isDigit(phoneDigit) == true || Character.isLetter(phoneDigit) == true);//semicolon

;表示语句结束。这意味着if条件到此结束。无论if返回什么(真或假),if下的语句将始终执行,因此{}下的其余语句将仅表现为非静态块

当我尝试使用 GETLOAN 输入(没有空格)时,它运行良好......但是当我在 e.g. 获取贷款,程序显示错误。

由于我上面指定的原因,您在输入空格时收到错误,因为if下的语句将始终执行

如果你输入两个用空格分隔的单词,例如"get loan",Scanner 会生成两个输出元素,即调用kb.next()只返回 "get"。第二次调用将返回"贷款"。Scanner 类不是用于您的目的的正确类。 使用类似的东西

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter String");
String s = br.readLine();

以从控制台读取。

最新更新