【问题标题】:Attempting to change characters to upper case in a mexican wave style pattern尝试以墨西哥波浪样式模式将字符更改为大写
【发布时间】:2020-07-22 02:10:08
【问题描述】:

我正在尝试获取一个字符串并将一个字符一次转换为大写字母,采用墨西哥波浪样式模式。应该是这样的

Input: hello

Output: Hello
        hEllo
        heLlo
        helLo
        hellO

然而,我得到的只是

Input: hello

Output: hello
        hello
        hello
        hello
        hello

这就是我的循环当前的样子

for(int i=0;i<s.length();i++)
   {
     a1=s.charAt(i);
     a2=Character.toUpperCase(a1);
     System.out.println(s);
    }

s 是字符串,a1 和 a2 是两个随机字符,用于存储当前值。

我不熟悉“Character.toUpperCase”,但我在网上找到了它,希望它能帮助解决我的问题,但似乎不是

【问题讨论】:

    标签: java loops methods


    【解决方案1】:

    您正在打印相同的字符串。要获得所需的输出,您可以执行以下操作,

    String s = "hello";
    for(int i=0;i<s.length();i++)
    {
        char a1 = s.charAt(i);
        char a2 = Character.toUpperCase(a1);
        if (i == 0)
            System.out.println(a2 +s.substring(i+1));
        else
            System.out.println( s.substring(0,i) +a2 +s.substring(i+1));
    }
    

    如果你想跳过 if-else 条件,

    String s = "hello";
    System.out.println(s.charAt(0) +s.substring(1)); // for first char
    for(int i=1;i<s.length();i++) // for rest of the chars
    {
        char a1 = s.charAt(i);
        char a2 = Character.toUpperCase(a1);
        System.out.println( s.substring(0,i) +a2 +s.substring(i+1));
    }
    

    【讨论】:

      【解决方案2】:

      String 是一个不可变的类。您不能就地更改String。因此将String 中的字符设置为大写不会改变它。

      您需要做的是要么使用可变的东西,例如StringBuilder,要么在每次您想要进行更改时创建一个新的String。

      下面的代码创建了一个新的String。首先,我得到源String 中的单个字符数组 - 根据您的问题,这是 hello。然后我遍历数组中的字符,依次将每个字符设置为大写,同时将先前更改的字符恢复为小写。在每次迭代中,我都会为当前的字母数组创建一个新的String。

      char[] letters = "hello".toCharArray();
      for (int i = 0; i < letters.length; i++) {
          if (i - 1 >= 0) {
              letters[i - 1] = Character.toLowerCase(letters[i - 1]);
          }
          letters[i] = Character.toUpperCase(letters[i]);
          System.out.println(new String(letters));
      }
      

      以上代码运行结果为:

      Hello
      hEllo
      heLlo
      helLo
      hellO
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-01
        • 2021-12-27
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-16
        相关资源
        最近更新 更多