Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想写一个程序来找到手机键盘上每个字母的坐标号。我喜欢这样_Java - Fatal编程技术网

Java 我想写一个程序来找到手机键盘上每个字母的坐标号。我喜欢这样

Java 我想写一个程序来找到手机键盘上每个字母的坐标号。我喜欢这样,java,Java,问题是,如果我一次输入两个或多个字母(例如“ab”,答案将是“2”,但我想要的是“无效输入”。我如何添加此说明以要求用户只输入一个字母?您可以在切换前检查str长度,并按如下方式返回: import java.util.Scanner; public class ConvertLetterToNumber { public static void main(String[] args) { Scanner input = new Scanner(System.in);

问题是,如果我一次输入两个或多个字母(例如“ab”,答案将是“2”,但我想要的是“无效输入”。我如何添加此说明以要求用户只输入一个字母?

您可以在切换前检查str长度,并按如下方式返回:

import java.util.Scanner;
public class ConvertLetterToNumber {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter one letter");
        String str = input.next();
        char ch = str.charAt(0);

        switch (ch){
        case 'A': case 'a': case 'B': case 'b': case 'C': case 'c':
            System.out.println("the number is 2");
            break;
        case 'D': case 'd': case 'E': case 'e': case 'F': case 'f':
            System.out.println("the number is 3");
            break;
        case 'G': case 'g': case 'H': case 'h': case 'I': case 'i':  
            System.out.println("the number is 4");
            break;
        case 'J': case 'j': case 'K': case 'k': case 'L': case 'l':
            System.out.println("the number is 5");
            break;
        case 'M': case 'm': case 'N': case 'n': case 'O': case 'o':
            System.out.println("the number is 6");
            break;
        case 'P':case 'p': case 'Q': case 'q': case 'R': case 'r': case 'S': case's':
            System.out.println("the number is 7");
            break;
        case 'T':case 't':case 'U':case'u':case'V':case 'v':
            System.out.println("the number is 8");
            break;
        case 'W':case 'w':case 'X': case 'x': case 'Y':case'y':case 'Z':case 'z':
            System.out.println("the number is 9");
            break;
        default :System.out.println("Error:invalid input");
        System.exit(1);
        }
    }
}

如果要检查完整的输入,为什么只取第一个字符
char ch=str.charAt(0);
?只需在字符上执行一个toLower()即可消除一半的
大小写
,如果要检查多个字符,则不要使用
charAt()
无论如何只返回一个字符。您真的需要System.exit(1)吗?@Marc B这是一个关于消除我的案例的非常好的提示!问题是让用户只输入一个字母,而不是两个或更多,例如:输入a和输出:2@ergonaut您能给我一个关于我还应该使用什么的提示吗?Scanner input=new Scanner(System.in);System.out.println(“输入一个字母”);String str=input.next();String ch=(str.substring(0)).toUpperCase();if(ch.length()>1){System.out.println(“无效输入.请只输入一个字符”);}else开关(ch){case“A”:case“B”:case“C”:System.out.println(“数字为2”);break;….默认值:System.out.println(“无效输入。请输入字母”);}}}我就是这么做的。似乎正确
if (str.length > 1){
    return;
}