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完全正确,我想我已经有了远见。这是你在回答我的评论时提出的最佳解决方案。谢谢。