Java 为什么';有效的方法不起作用吗?
下面是我试图用jcreatorle编写的代码。 我在这方面还处于初级阶段,希望你能帮助我Java 为什么';有效的方法不起作用吗?,java,Java,下面是我试图用jcreatorle编写的代码。 我在这方面还处于初级阶段,希望你能帮助我 public class TelNumHelper{ public static void main(String[] Args){ String input = "1-800-FLO-WERS"; String output = " "; int Key2,Key3,Key4,Key5,Key6,Key7,Key8,Key9,Key0; Key2 = 2; Key3
public class TelNumHelper{
public static void main(String[] Args){
String input = "1-800-FLO-WERS";
String output = " ";
int Key2,Key3,Key4,Key5,Key6,Key7,Key8,Key9,Key0;
Key2 = 2;
Key3 = 3;
Key4 = 4;
Key5 = 5;
Key6 = 6;
Key7 = 7;
Key8 = 8;
Key9 = 9;
Key0 = 0;
for(int i = 0;i<input.length();i++){
if(input.charAt(i)=='-'){
output = output + input.charAt(i);
}else{
output = output + valid(input.charAt(i));
}
}
public static char valid(char input){
if(input == A||input == B||input == C||input == 2){
System.out.println(Key2);
}else if(input == D||input == E||input == F||input == 3){
System.out.println(Key3);
}else if(input == G||input == H||input == I||input == 4){
System.out.println(Key4);
}else if(input == J||input == K||input == L||input == 5){
System.out.println(Key5);
}else if(input == M||input == N||input == O||input == 6){
System.out.println(Key6);
}else if(input == P||input == Q||input == R||input == S||input == 7){
System.out.println(Key7);
}else if(input == T||input == U||input == V||input == 8){
System.out.println(Key8);
}else if(input == W||input == X||input == Y||input == Z||input == 9){
System.out.println(Key9);
}else if(input == 0){
System.out.println(Key0);
}else{
System.out.println("Error");
}
}
}
公共类TelNumHelper{
公共静态void main(字符串[]Args){
字符串输入=“1-800-FLO-WERS”;
字符串输出=”;
int键2、键3、键4、键5、键6、键7、键8、键9、键0;
键2=2;
键3=3;
键4=4;
键5=5;
键6=6;
键7=7;
键8=8;
键9=9;
Key0=0;
对于(int i=0;i您的valid
方法会打印字符而不是返回字符。除了名称表明此方法进行某种验证外,if
案例必须使用return
。
您已将键定义为整数,但您确实希望返回具有适当数字的字符。并且您必须与字符进行比较,而不是与称为A、B等的静态变量进行比较。您可以是这样的:
char Key1 = '1';
char Key2 = '2';
...
public static void Main(string[] args) {
string input = "0-800-FLO-WERS";
string output = "";
for(....)...
}
public static char valid(char input)
{
if ((input == 'A') || (input == 'B') ... )
return Key1;
else if ....
}
如果您边编译边测试,就不会编写太多需要稍后修复的代码。通常在翻译中,使用一些映射更简单。下面是一种方法
public class Main {
static final String codes = "00000" +
"11111" +
"22ABC" +
"33DEF" +
"44GHI" +
"55JKL" +
"66MNO" +
"7PQRS" +
"88TUV" +
"9WXYZ";
public static void main(String... ignore) {
String input = "1-800-FLO-WERS";
String output = convertTextToDigits(input);
System.out.println(input + " can be dialed as " + output);
}
private static String convertTextToDigits(String input) {
StringBuilder sb = new StringBuilder(input.length());
for(char ch: input.toCharArray()) {
int pos = codes.indexOf(ch);
if (pos >=0)
sb.append(pos/5);
}
return sb.toString();
}
}
印刷品
1-800-FLO-WERS can be dialed as 18003569377
“不起作用”到底是什么意思?你不应该用“A”而不是“A”吗?(适用于所有字母)表达式的非法开始是当我构建它时的消息,就像你没有关闭main一样,edit:valid不应该在main中。不要定义变量,比如Key1
。而是使用一个变量,int key
,并将其粘贴在类not in main中。我建议你编写一段简短的代码,然后编译和测试。编写很多s的代码可能会导致许多错误,需要稍后进行清理。此代码工作正常,但输出示例1-800-356-9377中的“-”必须仍然存在。这是一个微不足道的修复,您只需添加两行即可。我相信您可以解决此问题。;)好的。非常感谢您:)当我构建它时,“public static char valid(char input)”仍然没有被接受,消息是这是一个“非法的表达开始”