Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息并通过editing this post阐明问题。

4年前关闭。





我用Java编写了一个代码,将大写字符转换为小写字母,反之亦然。例如,我检查了每种边缘情况是否为空字符串,无效字符串或包含空格的字符串。

问题:为什么当我使用以下输入字符串s=new String(" ")时会出现多余的空间

输出显示

3232

String s = new String(“ ab cd”);

输出显示

97 98 32 99 10032AB CD

下面是我的代码

class Change
{
    static void change(String p)
    {
        if (p == null)
        {
            System.out.print("Null String");
        }
        int f = p.length();
        if (f == 0)
        {
            System.out.print(" Empty String");
        }
        else
        {
            int u = 0;
            int i = 0;
            byte d = 32;
            char c[] = p.toCharArray();
            byte b[] = p.getBytes();
            for (i = 0; i < b.length; i++)
            {
                System.out.print(" ");
                System.out.print(b[i]);
            }

            for (i = 0; i < b.length; i++)
               {
                if (b[i] >= 65 && b[i] <= 90)
                {
                    b[i] = (byte) (b[i] + d);
                }
                else
                 {
                    if (b[i] >= 97 && b[i] <= 122)
                    {
                        b[i] = (byte) (b[i] - d);
                    }
                    else
                    {
                        if (b[i] == ' ')
                        {
                            System.out.print(b[i]);
                        }
                        else
                        {
                            System.out.print("Not a valid character");
                            break;
                        }
                    }
                }
            }
            String s2 = new String(b);
            System.out.print(s2);
        }
    }

    public static void main(String s[])
    {
        String s2 = new String("ab cd");
        change(s2);
    }
}

最佳答案

您将每个空格打印两次:

第一次来这里 :

for(i=0;i<b.length;i++)
{
 System.out.print(" ");
 System.out.print(b[i]); // first time
}


第二次在这里:

           if(b[i]==' ')
           {
             System.out.print(b[i]); // second time
           }


我假设应该删除后者。

例如,对于“ ab cd”输入,第一个循环打印:97 98 32 99 100
然后if(b[i]==' ')的条件将打印另一个32

09-26 03:02