Java 方法,该方法基于用户输入的值附加到Stringbuilder
我有一个家庭作业问题,需要我记下一个电话号码,如果电话号码有字符,就可以确定它是什么号码。当我运行当前方法时,它返回数字,但该方法输入的任何字符都会忽略它们 我尝试了当前方法的不同版本Java 方法,该方法基于用户输入的值附加到Stringbuilder,java,Java,我有一个家庭作业问题,需要我记下一个电话号码,如果电话号码有字符,就可以确定它是什么号码。当我运行当前方法时,它返回数字,但该方法输入的任何字符都会忽略它们 我尝试了当前方法的不同版本 class Telephone { String telephoneNumber; StringBuilder telephone = new StringBuilder(); public String translator(String telephoneNumber){
class Telephone {
String telephoneNumber;
StringBuilder telephone = new StringBuilder();
public String translator(String telephoneNumber){
for(int i=0; i<telephoneNumber.length(); i++){
if(Character.isDigit(telephoneNumber.charAt(i))){
telephone.append(telephoneNumber.charAt(i));
} else if(telephoneNumber.charAt(i) == 'A' || telephoneNumber.charAt(i) == 'B' || telephoneNumber.charAt(i) == 'C') {
telephone.append(2);
} else if(telephoneNumber.charAt(i) == 'D' || telephoneNumber.charAt(i) == 'E' || telephoneNumber.charAt(i) == 'F'){
telephone.append(3);
} else if(telephoneNumber.charAt(i) == 'G' || telephoneNumber.charAt(i) == 'H' || telephoneNumber.charAt(i) == 'I'){
telephone.append(4);
} else if(telephoneNumber.charAt(i) == 'J' || telephoneNumber.charAt(i) == 'K' || telephoneNumber.charAt(i) == 'L'){
telephone.append(5);
} else if(telephoneNumber.charAt(i) == 'M' || telephoneNumber.charAt(i) == 'N' || telephoneNumber.charAt(i) == 'O'){
telephone.append(6);
} else if(telephoneNumber.charAt(i) == 'P' || telephoneNumber.charAt(i) == 'Q' || telephoneNumber.charAt(i) == 'R'){
telephone.append(7);
} else if(telephoneNumber.charAt(i) == 'T' || telephoneNumber.charAt(i) == 'U' || telephoneNumber.charAt(i) == 'V'){
telephone.append(8);
} else if(telephoneNumber.charAt(i) == 'W' || telephoneNumber.charAt(i) == 'X' || telephoneNumber.charAt(i) == 'Y' || telephoneNumber.charAt(i) == 'Z' ){
telephone.append(9);
}
}
return telephone.toString();
}
}
班级电话{
字符串电话号码;
StringBuilder电话=新建StringBuilder();
公共字符串转换器(字符串电话号码){
对于(int i=0;i编写一个函数,该函数接受两个字符
,使用String.valueOf()
将它们转换为字符串,然后使用equalsIgnoreCase()
对它们进行比较。然后在所有条件下使用该函数,如果
条件不满足,则使用该函数。这样会更干净
编辑
您还可以将电话号码
转换为大写(或小写,如您所愿)然后按照@Stultuske在评论中的建议继续操作555555 food
包含小写的food
,但您只检查大写字符。如果输入是555555 food
,则您的代码可以正常工作。因此,您可能希望对其进行修改,使其独立于大小写。@Stultuske您是正确的。>食品
/食品
应该产生3663
而不是3662
,因为d
在OP的代码中变成了3
。@Ross编写一个函数,不管大小写如何接收字符,将其转换为字符串
,然后检查它是否等于SignoreCase()
一些字符与您要检查的字符一致。这通常应该可以用于优化:for(char ch:telephoneNumber.tocharray()){
而不是for(int i=0;i@ShankhadeepGhoshal将其转换为字符,将其转换回字符串…如果您只使用当前方法(按原样)作为第一行,你添加了telephoneNumber=telephoneNumber.toUpperCase();你会很好的。这没有什么意义,而且可能会使事情变得非常复杂。你的回答到底是什么意思?@Stultuske完全正确,我想我已经有了远见。这是你在回答我的评论时提出的最佳解决方案。谢谢。