我需要能够保存循环结果的字符串能够操纵用户输出。无阵列
我已经尝试转换为字符串循环不太大的意义内。我想不出另一种方式来保存结果,除非我做的另一种方法。我不允许创建阵列。
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter phone number: ");
String number = input.nextLine();
String phone ="";
for (int i = 0; i < number.length(); i++){
if (Character.isLetter(number.charAt(i)))
phone = getNumber(Character.toUpperCase(number.charAt(i)));
else
number.charAt(i);
}
System.out.println("Your number is " + phone);
}
public static int getNumber(char uppercaseLetter){
if (uppercaseLetter >= 'W' && uppercaseLetter <= 'Z')
return 9;
else if (uppercaseLetter >= 'T' && uppercaseLetter < 'W')
return 8;
else if (uppercaseLetter >= 'P' && uppercaseLetter < 'T')
return 7;
else if (uppercaseLetter >= 'M' && uppercaseLetter < 'P')
return 6;
else if (uppercaseLetter >= 'J' && uppercaseLetter < 'M')
return 5;
else if (uppercaseLetter >= 'G' && uppercaseLetter < 'J')
return 4;
else if (uppercaseLetter >= 'D' && uppercaseLetter < 'G')
return 3;
else
return 2;
}
}
应该是这样的:即。 352嘿呼叫=“您的号码是352-439-2255”
其实,对于每一个烧焦你正在寻找相应的字母或数字,但你不使用它,你需要附加在一起。对字符串使用+=
运营商,但它在获得更好的性能的循环则建议使用StringBuilder
StringBuilder phone = new StringBuilder();
for (int i = 0; i < number.length(); i++){
if (Character.isLetter(number.charAt(i))){
phone.append(getNumber(Character.toUpperCase(number.charAt(i))));
}else{
phone.append(number.charAt(i));
}
}
System.out.println("Your number is " + phone.toString());