转换字母&;将电话号码中的号码转换为所有号码(Java) import java.util.Scanner; 导入javax.swing.JOptionPane; 公共类电话翻译器{ 专用静态扫描仪输入; 公共静态void main(字符串[]args){ 输入=新扫描仪(System.in); System.out.println(“输入电话号码(带字母)”); String initial_phone_number=input.nextLine(); initial_phone_number=initial_phone_number.toUpperCase(); int phone_number_final=0; System.out.printf(“%s的电话号码是%s”,初始电话号码,最终电话号码); }//干管末端 公共静态整数完整号码(字符串初始电话号码) { int,其中_字符=0; int phone_number_final=0; char ch=(字符)null; for(哪个字符=0;哪个字符
我只是想复制/粘贴整个东西。。。但每当我运行代码时,它总是输出1800FLOWERS的电话号码为0。现在我肯定还有其他一些错误,但我最关心的是为什么它一直给我一个转换字母&;将电话号码中的号码转换为所有号码(Java) import java.util.Scanner; 导入javax.swing.JOptionPane; 公共类电话翻译器{ 专用静态扫描仪输入; 公共静态void main(字符串[]args){ 输入=新扫描仪(System.in); System.out.println(“输入电话号码(带字母)”); String initial_phone_number=input.nextLine(); initial_phone_number=initial_phone_number.toUpperCase(); int phone_number_final=0; System.out.printf(“%s的电话号码是%s”,初始电话号码,最终电话号码); }//干管末端 公共静态整数完整号码(字符串初始电话号码) { int,其中_字符=0; int phone_number_final=0; char ch=(字符)null; for(哪个字符=0;哪个字符,java,loops,numbers,phone-number,letters,Java,Loops,Numbers,Phone Number,Letters,我只是想复制/粘贴整个东西。。。但每当我运行代码时,它总是输出1800FLOWERS的电话号码为0。现在我肯定还有其他一些错误,但我最关心的是为什么它一直给我一个0?我觉得这是因为我初始化了它,出于某种原因,我从不改变它的值。请帮帮我,我的教授回复我的邮件要花很长时间:(改变 import java.util.Scanner; import javax.swing.JOptionPane; public class PhonePadTranslator { private static
0
?我觉得这是因为我初始化了它,出于某种原因,我从不改变它的值。请帮帮我,我的教授回复我的邮件要花很长时间:(改变
import java.util.Scanner;
import javax.swing.JOptionPane;
public class PhonePadTranslator {
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
System.out.println("Enter The Phone Number (With Letters) ");
String initial_phone_number = input.nextLine();
initial_phone_number = initial_phone_number.toUpperCase();
int phone_number_final = 0;
System.out.printf("The phone number for %s is %s", initial_phone_number, phone_number_final);
}//end of main
public static int full_number(String initial_phone_number)
{
int which_character = 0;
int phone_number_final = 0;
char ch = (Character) null;
for (which_character = 0; which_character < initial_phone_number.length(); which_character++)
{
if (Character.isLetter(ch))
{
switch(ch)
{
case 'A' : case 'B' : case 'C' : phone_number_final = 2; break;
case 'D' : case 'E' : case 'F' : phone_number_final = 3; break;
case 'G' : case 'H' : case 'I' : phone_number_final = 4; break;
case 'J' : case 'K' : case 'L' : phone_number_final = 5; break;
case 'M' : case 'N' : case 'O' : phone_number_final = 6; break;
case 'P' : case 'Q' : case 'R' : case 'S' : phone_number_final = 7; break;
case 'T' : case 'U' : case 'V' : phone_number_final = 8; break;
case 'W' : case 'X' : case 'Y' : case 'Z' : phone_number_final =9; break;
}
return (char)phone_number_final;
}
if (Character.isDigit(ch))
{
return (char)phone_number_final;
}
else {
return (char)phone_number_final;
}
} //end of for
return ch;
}//end of full_number
}//end of class
到
您没有将结果分配给变量 除此之外,我相信您的
完整编号
功能也不完全正确
更新代码:
int phone_number_final = full_number(initial_phone_number);
import java.util.Scanner;
public class StringToNumbers
{
private static Scanner input;
public static void main(String[] args)
{
input = new Scanner(System.in);
System.out.println("Enter The Phone Number (With Letters): ");
String initial_phone_number = input.nextLine();
initial_phone_number = initial_phone_number.toUpperCase();
long phone_number_final = full_number(initial_phone_number);
System.out.printf("%nOutput phone number for '%s' is '%s'",
initial_phone_number, phone_number_final);
}
public static long full_number(String initial_phone_number)
{
// Use long instead of int for 'number' if the string will be longer than max int value
// 2147483647, which is '10 digits'
long number = 0;
int strLen = initial_phone_number.length();
for (int currCharacter = 0; currCharacter < strLen; currCharacter++)
{
char ch = initial_phone_number.charAt(currCharacter);
// For A-Z & 0-9, multiply by 10, add the 'char' to number.
// i.e., Shift existing value to the left by 1 digit, add current 'char' to it
// Use long instead of int if the string will be longer than max int value (2147483647)
if (Character.isLetter(ch))
{
switch(ch)
{
case 'A' : case 'B' : case 'C' : number *= 10; number += 2; break;
case 'D' : case 'E' : case 'F' : number *= 10; number += 3; break;
case 'G' : case 'H' : case 'I' : number *= 10; number += 4; break;
case 'J' : case 'K' : case 'L' : number *= 10; number += 5; break;
case 'M' : case 'N' : case 'O' : number *= 10; number += 6; break;
case 'P' : case 'Q' : case 'R' : case 'S' : number *= 10; number += 7; break;
case 'T' : case 'U' : case 'V' : number *= 10; number += 8; break;
case 'W' : case 'X' : case 'Y' : case 'Z' : number *= 10; number += 9; break;
}
}
else if (Character.isDigit(ch))
{
number *= 10; number += Character.getNumericValue(ch);
}
else
{
System.out.println("Invalid character!");
}
} // End of for loop
// Return actual number only at the end of the function
return number;
}// End of full_number function
}
尽管这个问题已经得到了回答,但我想指出一些事情。不要使用int或long来保存电话号码!您将丢失前导零!而且您很容易超出int或long范围。另外,当前接受的答案更难理解。我只需使用更少、更容易理解的代码:
Enter The Phone Number (With Letters):
1800FLOWERS
Output phone number for '1800FLOWERS' is '18003569377'
我认为这更容易理解。这里有一个c的答案
类程序
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“请输入电话号码(带字母):”;
字符串初始_phone_number=Console.ReadLine();
initial_phone_number=initial_phone_number.ToUpper();
字符串电话号码\最终=完整电话号码(初始电话号码);
Console.WriteLine(“输出电话号码为“+初始电话号码+”为“+最终电话号码”);
Console.ReadLine();
}
公共静态字符串完整号码(字符串初始电话号码)
{
字符串编号=”;
字符串数字=”;
int strLen=初始电话号码长度;
对于(int currCharacter=0;currCharacter
你没有调用你的方法。你是对的。它不再给我一个0,现在它只是在打印结果时导致了一个错误。因此,现在我只需修复函数一分钟,我将对函数进行一些更改,你可以稍后尝试。完成后,请查看并让我知道是否有任何您不理解的地方非常感谢你。现在我看到了,这真的很有道理。你是最棒的!
Enter The Phone Number (With Letters):
1800FLOWERS
Output phone number for '1800FLOWERS' is '18003569377'
public String toNormalPhoneNumber(String phoneNumber) {
String normal = "";
foreach (char c : phoneNumber.toUppercase().toCharArray())
normal += getKeypadNumber(c);
return normal;
}
public char getKeypadNumber(char characterToConvert) {
if (Character.isDigit(characterToConvert))
return characterToConvert;
else {
switch (characterToConvert) {
case 'A' : case 'B' : case 'C' : return '2';
case 'D' : case 'E' : case 'F' : return '3';
case 'G' : case 'H' : case 'I' : return '4';
case 'J' : case 'K' : case 'L' : return '5';
case 'M' : case 'N' : case 'O' : return '6';
case 'P' : case 'Q' : case 'R' : case 'S' : return '7';
case 'T' : case 'U' : case 'V' : retrun '8';
case 'W' : case 'X' : case 'Y' : case 'Z' : return '9';
default return '?';
}
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter the phone number (With Letters): ");
string initial_phone_number = Console.ReadLine();
initial_phone_number = initial_phone_number.ToUpper();
string phone_number_final = full_number(initial_phone_number);
Console.WriteLine("Output phone number for " + initial_phone_number + " is " + phone_number_final);
Console.ReadLine();
}
public static string full_number(String initial_phone_number)
{
string number = "";
string digit = "";
int strLen = initial_phone_number.Length;
for (int currCharacter = 0; currCharacter < strLen; currCharacter++)
{
string ch = initial_phone_number.Substring(currCharacter,1);
int n;
bool isNumeric = int.TryParse(ch, out n);
if (!isNumeric)
{
switch (ch)
{
case "A": case "B": case "C": digit = "2"; break;
case "D": case "E": case "F": digit = "3"; break;
case "G": case "H": case "I": digit = "4"; break;
case "J": case "K": case "L": digit = "5"; break;
case "M": case "N": case "O": digit = "6"; break;
case "P": case "Q": case "R": case "S": digit = "7"; break;
case "T": case "U": case "V": digit = "8"; break;
case "W": case "X": case "Y": case "Z": digit = "9"; break;
}
number = number + digit;
}
else if (isNumeric)
{
number = number + n.ToString();
}
else
{
Console.WriteLine("Invalid character!");
}
}
return number;
}
}