Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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,这只是一个有点让我难以理解的问题,我的老师英语说得不太好,所以我想看看你们是否能帮我解决这个问题。我很惊讶我已经走到了这一步,但我已经在互联网上找到了帮助我走出困境的方法,现在我陷入了困境。这是我的密码 import java.util.Scanner; public class Phone { public static int getNumber(char uppercaseLetter) { char[] letter = {'A', '

这只是一个有点让我难以理解的问题,我的老师英语说得不太好,所以我想看看你们是否能帮我解决这个问题。我很惊讶我已经走到了这一步,但我已经在互联网上找到了帮助我走出困境的方法,现在我陷入了困境。这是我的密码

import java.util.Scanner;

public class Phone {
    public static int getNumber(char uppercaseLetter) {

        char[] letter =
            {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
             'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

        int[] value = {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6,
                       7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9};

        for (int i = 0; i < letter.length; i++) {
            if (uppercaseLetter == letter[i]) {
                return value[i];
            }
        }
        return 0;
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the phone number string :");

        String getNumber = input.nextLine();
        for (int i = 0; i < getNumber.length(); i++) {
            System.out.print(getNumber(getNumber.toUpperCase().charAt(i)));
        }
    }
}

你的代码基本上是正确的。最大的问题是你从未检查过这个字符是否是字母。因此,您可以为本应逐字打印的部分打印“0”(即“1-800-”)

阵列中还有一个额外的6(6只是MNO,不是MNOP)。请阅读我的评论,确保您理解修复

关于你的声明:

但我不明白为什么我的代码根本没有输出

Case 1 (with hyphen)
Enter the phone number string
1-800-flowers<---User input
Phone #: 1-800-3569377
您的旧代码确实输出了一个结果,只是一个不正确的结果,这让我觉得您没有正确运行它。首先尝试使用hello world示例。如果您在让输出工作时仍然存在问题,那么您可能需要添加有关开发环境的详细信息,以便我们能够找出您根本无法让代码运行的原因

import java.util.Scanner;

public class Phone
{
    public static int getNumber(char uppercaseLetter)
    {

        char[] letter =
        { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
                'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

        // You had an extra 6 here
        int[] value = { 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6,
                7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9 };

        for (int i = 0; i < letter.length; i++)
        {
            if (uppercaseLetter == letter[i])
            {
                return value[i];
            }
        }
        return 0;
    }

    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the phone number string :");

        String getNumber = input.nextLine();
        for (int i = 0; i < getNumber.length(); i++)
        {
            // First you need to check if the character is a letter
            char c = getNumber.toUpperCase().charAt(i); // get the character
            int value = getNumber(c); // get the number associated w/ it

            if (value != 0)
            {
                System.out.print(value); // If getNumber(..) returned a number, print that number
            }
            else
            {
                // If it returned 0 (i.e. 'uppercaseLetter' wasn't an uppercase letter
                //   then just print the character (which will print out the "1-800-" part)
                System.out.print(c);
            }
        }

        // It's recommended that you close input, although you don't really need to for small programs
        //   like this. Just a good habit to get into.
        input.close();
    }
}
import java.util.Scanner;
公用电话
{
公共静态int getNumber(字符大写字母)
{
字符[]字母=
{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S',',
‘T’、‘U’、‘V’、‘W’、‘X’、‘Y’、‘Z’};
//你这里有一个额外的6
int[]值={2,2,2,3,3,4,4,5,5,6,6,
7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9 };
for(int i=0;i
编辑: 注释中的Ben是正确的,该代码不能完全满足您给定的需求

  • 不打印每个字符,而是将其附加到字符串(即使用+=运算符),然后打印出字符串

  • 我正在检查函数getNumber是否作为大写字母的测试失败,但是需求建议,只有当字符是大写字母时,才应该使用测试运行getNumber(c>='a'&&c为什么不使用哈希?这会容易得多

    这里有一个提示可以帮助您继续:

    import java.util.*;
    
    class HelloWorldApp {
        public static void main(String[] args) {
    
        HashMap<Character, Integer> myMap = new HashMap<Character, Integer>();
        myMap.put(new Character('A'), new Integer(2));
        System.out.println(myMap.get('A'));
       }
    }
    
    import java.util.*;
    类HelloWorldApp{
    公共静态void main(字符串[]args){
    HashMap myMap=新HashMap();
    put(新字符('A'),新整数(2));
    System.out.println(myMap.get('A');
    }
    }
    
    @Jongware它也能理解我。但是用户输入被存储在
    getNumber
    中,函数也被调用了
    getNumber
    。真的很混乱你的程序确实产生了一个输出:0000003568377。那么你的问题到底是什么?啊-函数
    getNumber
    的默认返回值返回了错误的东西。真的很小吗,且易于检测。快速查看,您的问题似乎只是“返回0”…如果是“返回大写字母”我想你还好。问题是你返回了0而不是任何非ASCII字符。<代码>如果PosiNekBrSTR的当前字符不是一个字母…<代码>,我也看不到你的代码中的那个部分,因为他打算建立字符串输入然后显示,考虑更新,以反映我没有过“哈希”。在我的课程中,这样做对这个项目是不正确的。