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