该程序是3个数字的字符串,然后使用方法将7个字母转换为其等效数字 用户输入是一个字符串,它从字母变为数字,然后变回由短划线分隔的数字串。 所以这只是第3周的学习,我被方法绊倒了。我收到的错误代码告诉我字符串索引超出范围。因此,我怀疑错误是在我的转换中,或者我在第89行附近连接了字符串。我花了20分钟与TA一起,并希望得到任何指导。我还有更多关于这个程序,所以我省略了一些,因为当我来到一个我被卡住超过45分钟的地方时,我只想帮助。主要问题 - 错误发生在哪里,为什么? 我试图在任何地方放置打印语句,看看发生了什么......但是我可能会被困在一个循环中。
bsub -i main%I.R -J "array[1-100]" "R --vanilla --slave"
不确定我可以投入多少细节。
答案 0 :(得分:3)
我想我找到了你的问题。
在将输入转换为数字的方法中,你写了这个:
String s6 = "";
for (int i=0; i < s1.length(); i++) {
if (Character.isDigit(s1.charAt(i))){
s2 += s1.charAt(i);
}
//sorting of the letter inputs
char ch = s1.charAt(i);
if (ch == 'a'||ch=='b'||ch== 'c'){
s2 += "2";
}
if (ch == 'd'||ch=='e'||ch=='f'){
s2 += "3";
}
if (ch == 'g'||ch=='h'||ch=='i'){
s2 += "4";
}
if (ch == 'j'||ch=='k'||ch=='l'){
s2 += "5";
}
if (ch == 'm'||ch=='n'||ch=='o'){
s2 += "6";
}
if (ch == 'p'||ch=='q'||ch=='r'|| ch=='s'){
s2 += "7";
}
if (ch == 't'||ch=='u'||ch=='v'){
s2 += "8";
}
if (ch == 'w'||ch=='x'||ch=='y'|| ch=='z')
{
s2 += "9";
}
else{
}
String s3 = s2.substring(0,3);
String s4 = s2.substring(3,6);
String s5 = s2.substring(6);
s6 = ( s3 +"-"+ s4 + "-"+ s5);
}
首先,您已检查输入字符串中是否已有任何数字 - 如果有,则只需将数字添加到已处理的字符串中。然后你检查了字母并相应地处理了每个字母。
但是你有问题。在完成已处理字符串s2
(在for
循环内)的构造之前,您尝试提取已处理字符串的部分内容。这应该在for
循环之后完成。
所以,该方法看起来应该是这样的。
public static String convertToDigit(String s010){
s010 = s010.toLowerCase();
String s001= s010.substring(0,3);
String s002 = s010.substring(4,6);
String s003 = s010.substring(8,12);
String s1 = (s001+s002+s003);
String s2 = "";
// Exceptions to our problem to stop invalid inputs
if (s1 == null) {
System.out.print (" invalid input null thing");
}
if (s1.length() != 10){
System.out.print (" invalid input");
}
String s6 = "";
for (int i=0; i < s1.length(); i++) {
if (Character.isDigit(s1.charAt(i))){
s2 += s1.charAt(i);
}
//sorting of the letter inputs
char ch = s1.charAt(i);
if (ch == 'a'||ch=='b'||ch== 'c'){
s2 += "2";
}
if (ch == 'd'||ch=='e'||ch=='f'){
s2 += "3";
}
if (ch == 'g'||ch=='h'||ch=='i'){
s2 += "4";
}
if (ch == 'j'||ch=='k'||ch=='l'){
s2 += "5";
}
if (ch == 'm'||ch=='n'||ch=='o'){
s2 += "6";
}
if (ch == 'p'||ch=='q'||ch=='r'|| ch=='s'){
s2 += "7";
}
if (ch == 't'||ch=='u'||ch=='v'){
s2 += "8";
}
if (ch == 'w'||ch=='x'||ch=='y'|| ch=='z')
{
s2 += "9";
}
else{
}
// They should not be here
/* String s3 = s2.substring(0,3);
String s4 = s2.substring(3,6);
String s5 = s2.substring(6);
s6 = ( s3 +"-"+ s4 + "-"+ s5);*/
} // end of for loop; completed constructing s2
// They should be here
String s3 = s2.substring(0,3);
String s4 = s2.substring(3,6);
String s5 = s2.substring(6);
s6 = ( s3 +"-"+ s4 + "-"+ s5);
return s6;
}