我正在为一个班级工作,我需要将一个字母的用户输入转换为电话号码。与A=2
或K=5
一样。我将用户输入转换为大写,然后转换为ASCII。我正在使用ASCII作为我的if / else,它编译并运行但总是打印
System.out.println (x+"'s corrosponding digit is " + 2);
无论我输入什么字母,也是最后一行
else System.err.println("invalid char " + x);
不起作用,只打印出数字2
,x
就是我输入的内容。
public class Phone {
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
System.out.println ("Please enter a letter from A-Z.");
char x = input.next().charAt(0);
x = Character.toUpperCase(x);
int y = x;
System.out.println ("You entered the letter " + x);
if (y>=65 || y<=67)
System.out.println (x+"'s corrosponding digit is " + 2);
else if (y>=68 || y<=70)
System.out.println (x+"'s corrosponding digit is " + 3);
else if (y>=71 || y<=73)
System.out.println (x+"'s corrosponding digit is " + 4);
else if (y>=74 || y<=76)
System.out.println (x+"'s corrosponding digit is " + 5);
else if (y>=77 || y<=79)
System.out.println (x+"'s corrosponding digit is " + 6);
else if (y>=80 || y<=83)
System.out.println (x+"'s corrosponding digit is " + 7);
else if (y>=84 || y<=86)
System.out.println (x+"'s corrosponding digit is " + 8);
else if (y>=87 || y<=90)
System.out.println (x+"'s corrosponding digit is " + 9);
else System.err.println("invalid char " + x);
}
}
答案 0 :(得分:1)
替换||与&amp;&amp;在你的if else陈述中。
答案 1 :(得分:1)
在你的if-block上,你的第一个条件是if (y>=65 || y<=67)
。让我们稍微打开一下:
IF ( y >= 65 ) OR ( y <= 67 )
。
你看到了这个问题吗?由于你编写了一个OR,整个语句总是会计算为true
:对于任何一个y,y必须大于65或小于67.我怀疑你打算写一个AND({{1 }})。
答案 2 :(得分:1)
您的条件有误,请将[centos@master ~]$ sudo su - vora
[vora@master ~]$
更改为||
:
&&
并纠正所有条件。
拥有示例if (y>=65 && y<=67) ...
。这意味着条件总是(y>=65 || y<=67)
,因为任何true
总是大于或等于65 或 smaler或等于67(难以解释)。如果要检查,如果两个条件一次都为真,则必须使用y
答案 3 :(得分:1)
您的第一个条件是if (y>=65 || y<=67)
,对于任何字符,如果满足这两个条件中的任何一个,它将打印x+"'s corrosponding digit is " + 2
并且永远不会检查任何其他else if
条件。您需要在所有条件下将||
运算符替换为&&
运算符。
答案 4 :(得分:1)
为什么不能这样:
char x = input.next().charAt(0);
x = Character.toUpperCase(x);
int digit = 0;
switch (x ) {
case 'A': case 'B': case 'C':
digit = 1;
break;
case 'D': case'E': case 'F':
digit = 2;
break;
//etc.
default:
break;
}
if ( digit < 1 ) {
System.out.println( "The letter " + x + " is not on a phone pad" );
} else {
System.out.println( "x + "'s corrosponding digit is " + digit);
}
请注意,有些手机可能会使用不同的字母组合;例如,有些手机使用“PQRS”代表7,有些使用“PRS”,省略Q.