我正在创建一个解码器程序,它基本上会使用while循环将数字转换为特定的字母,但是我很难弄清楚我的代码有什么问题以及是否有更简单的方法来放置例如,它使用开关。以下是我到目前为止的情况:
import java.util.Scanner;
public class Decoder{
public static String decode(String str){
int i = 0;
while(i<str.length()){
if(str.charAt(i)=='1')
return("D");
else if(str.charAt(i)=='2')
return("W");
else if(str.charAt(i)=='3')
return("E");
else if(str.charAt(i)=='4')
return("L");
else if(str.charAt(i)=='5')
return("H");
else if(str.charAt(i)=='6')
return("O");
else if(str.charAt(i)=='7')
return("R");
return("Sorry, you must input numbers from 1-7 inclusive");
}
i++;
}
public static void main(String[] args){
System.out.println("Enter a number ");
}
}
答案 0 :(得分:0)
不确定。使用常量char数组作为查找表。
在索引0处,存储“D”。在索引1处,存储'W'等
每当你在源代码中遇到一个数字时,向它减去“1”以获得该数字的数组中的索引,并从数组中获取匹配的字母。
代码留作练习。
答案 1 :(得分:0)
除了JB Nizet提到的数组之外,您可以尝试:
switch
声明Map<Integer, String>
答案 2 :(得分:0)
你可以像这样使用StringBuilder和switch / case:
public class Decoder {
public static String decode(String str) {
int i = 0;
StringBuilder decodedString = new StringBuilder();
while (i < str.length()) {
switch (str.charAt(i)) {
case '1':
decodedString.append("D");
break;
case '2':
decodedString.append("W");
break;
case '3':
decodedString.append("E");
break;
case '4':
decodedString.append("L");
break;
case '5':
decodedString.append("H");
break;
case '6':
decodedString.append("O");
break;
case '7':
decodedString.append("R");
break;
default:
return ("Sorry, you must input numbers from 1-7 inclusive");
}
i++;
}
return decodedString.toString();
}
public static void main(String[] args) {
while (true) {
System.out.println("Enter a number: ");
Scanner input = new Scanner(System.in);
System.out.println(decode(input.next()));
System.out.println();
}
}