所以我创建了这个代码来将单词转换为电话号码,但是当我尝试使用7字以下的字母运行此代码时,它将显示超出范围的字符串索引。但是7个或更多是好的。我该如何解决?如果是这样,我如何设置字符串范围?
{
System.out.println("Enter a word to be converted: ");
String telLetter = console.next ();
telLetter = telLetter.toUpperCase();
String telNumber="7";
int count=0;
int i=0;
while(count <7)
{switch(telLetter.charAt(i))
{case 'A':case 'B':case 'C': case 'a': case 'b': case 'c':
telNumber += "2";
count++;
break;
case 'D':case 'E':case 'F': case 'd': case 'e': case 'f':
telNumber += "3";
count++;
break;
case 'G':case 'H':case 'I': case 'g': case 'h': case 'i':
telNumber += "4";
count++;
break;
case 'J':case 'K':case 'L': case 'j': case 'k': case 'l':
telNumber += "5";
count++;
break;
case 'M':case 'N':case 'O': case 'm': case 'n': case 'o':
telNumber += "6";
count++;
break;
case 'P':case 'R':case 'S': case 'p': case 'r': case 's':
telNumber += "7";
count++;
break;
case 'T':case 'U':case 'V': case 't': case 'u': case 'v':
telNumber += "8";
count++;
break;
case 'W':case 'X':case 'Y':case 'Z': case 'w': case 'x': case 'y': case 'z':
telNumber += "9";
count++;
break;
}
if( count==3) {
telNumber += "-";
}
i++;
}
System.out.println( telNumber );
}
}}
答案 0 :(得分:1)
代码修复:
while(count < telLetter.length())
代替while(count <7)
... telLetter.charAt(i)
可以通过(telLetter.charAt(count))
移除...通过这样做,您不需要创建额外的变量int i = 0;
...这是一个保持变量的好习惯最小。Scanner sc = new Scanner(System.in);
String telLetter = sc.next();
... sc.close();
.... 7
......如果这是一个要求,那么它就可以了......其他明智的你可以使用...... String telNumber=""
; StringBuilder
,因为在一个对象中,您可以完成所有操作..每次在string
附加一个字符时,您不断创建new string
并为其提供参考telNumber
。 telLetter = telLetter.toUpperCase();
或删除带有小写字母的案例..因为在制作toUpperCase()
时,您只是通过为不需要的小写字符编写案例来编写额外的行... 答案 1 :(得分:0)
你的while循环条件需要检查telLetter
字符串的长度。
while (count <7 && count < telLetter.length())
答案 2 :(得分:0)
while(count <7)
您的代码在运行7个字符之前不会结束。尝试使用while(count < telLetter.length())
答案 3 :(得分:0)
System.out.println("Enter a word to be converted: ");
Scanner scan=new Scanner(System.in);
String telLetter = scan.next ();
int stringLength=telLetter.length();
telLetter = telLetter.toUpperCase();
String telNumber="7";
while(count <stringLength)
{
switch(telLetter.charAt(count))
像这样更改您的代码。 但根据您的代码,7总是以转换后的电话号码为前缀。 字符串telNumber =&#34;&#34 ;; telNumber应该用空字符串声明。