创建从Java循环的结果字符串

问题描述 投票:-4回答:1

我需要能够保存循环结果的字符串能够操纵用户输出。无阵列

我已经尝试转换为字符串循环不太大的意义内。我想不出另一种方式来保存结果,除非我做的另一种方法。我不允许创建阵列。

    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”

java string loops output letter
1个回答
1
投票

其实,对于每一个烧焦你正在寻找相应的字母或数字,但你不使用它,你需要附加在一起。对字符串使用+=运营商,但它在获得更好的性能的循环则建议使用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());
© www.soinside.com 2019 - 2024. All rights reserved.