将单词的整数表示形式转换回String

时间:2012-02-24 00:48:46

标签: java integer append tostring

这是一项家庭作业,我的输出有问题。一切都按预期工作,除了Integer.toString()没有给我我想要的结果。当我希望将它们转换为实际单词时,它仍然只输出一堆数字。这是代码和输出:

    import java.io.*;

    public class NumStream extends OutputStream
    {
        public void write(int c) throws IOException
        {  
            StringBuffer sb = new StringBuffer();
            switch(c)
            {
                case ' ': sb.append(" ");
                    break;
                case '1': sb.append("One");
                    break;
                case '2': sb.append("Two");
                    break;
                case '3': sb.append("Three");
                    break;
                case '4': sb.append("Four");
                    break;                
                case '5': sb.append("Five");
                    break; 
                case '6': sb.append("Six");
                    break;
                case '7': sb.append("Seven");
                    break;
                case '8': sb.append("Eight");
                    break;     
                case '9': sb.append("Nine");
                    break; 
                case '0': sb.append("Zero");
                    break;
                default:  sb.append(Integer.toString(c));
                    break;
            }
            System.out.print(sb);
        }
        public static void main(String[] args) 
        {
            NumStream ns = new NumStream();
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(ns));
            pw.println("123456789 and ! and # ");
            pw.flush();
        }
    }

输出为:OneTwoThreeFourFiveSixSevenEightNine 97110100 33 97110100 35 1310

有人可以告诉我如何在这个论坛中更轻松地格式化代码吗?我不得不每行手动缩进8个空格,这是一个更简单的方法!

2 个答案:

答案 0 :(得分:1)

对于非数字的字符,您将获取字符代码并将其转换为数字。所以97 110和100是'a','n'和'd'的字符代码,而33和35是!#

您可能想要的默认情况只是:

default: sb.append((char)c); break;

请注意,每次调用write例程时创建一个新的StringBuffer都非常浪费且效率低下。因为你只需要向它添加一个字符串/ char,所以你也可以直接打印字符串/ char而不是复制StringBuffer。

答案 1 :(得分:0)

您正在输出sb.append(Integer.toString(c))中不是数字的字符的ascii代码。