【问题标题】:Trying to print a word from a String on seperate lines尝试在单独的行上打印字符串中的单词
【发布时间】:2020-11-16 13:21:06
【问题描述】:

我想要它,以便它在自己的行上打印每个单词。

String movie = "10 Things I Hate About You";
String g = "";
for (int letter = 0; letter < movie.length(); letter++) {
    if (letter != ' ') {
        g += word.charAt(letter);
    } else {
        g += "\n";
    }
}
System.out.println(g);

但是,我每次都会遇到这个错误。

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 8
    at java.lang.String.charAt(String.java:658)
    at MyProgram.main(MyProgram.java:34)

【问题讨论】:

    标签: java string replace


    【解决方案1】:

    你应该检查movie.charAt(letter) != ' ',如果是true,你应该将movie.charAt(letter)添加到g

    public class Main {
        public static void main(String[] args) {
            String movie = "10 Things I Hate About You";
            String g = "";
            for (int letter = 0; letter < movie.length(); letter++) {
                if (movie.charAt(letter) != ' ') {
                    g += movie.charAt(letter);
                } else {
                    g += "\n";
                }
            }
            System.out.println(g);
        }
    }
    

    输出:

    10
    Things
    I
    Hate
    About
    You
    

    一个更简单的解决方案:

    public class Main {
        public static void main(String[] args) {
            String movie = "10 Things I Hate About You";
            movie = movie.replace(' ', '\n');
            System.out.println(movie);
        }
    }
    

    输出:

    10
    Things
    I
    Hate
    About
    You
    

    【讨论】:

      【解决方案2】:
      String movie = "10 Things I Hate About You";
      StringBuilder g = new StringBuilder();
      String g = "";
      for(int letter = 0; letter < movie.length(); letter++) {
          if(word.charAt(letter) != ' ') {
              g.append(word.charAt(letter));
          }
          else {
              g.append("\n");
          }
      }System.out.println(g);
      

      【讨论】:

        【解决方案3】:

        您可以将字符串拆分为一个数组,并在新行中打印该数组的每个元素。

        String movie = "One word per line";
        String[] arrOfStr = movie.split(" ");
        for(String s : arrOfStr){
            System.out.println(s);
        } 
        

        【讨论】:

          【解决方案4】:

          您可以使用regular expression 来拆分数组。无需循环来检查单个字符。这将使用与您正在使用的操作系统相关的行分隔符。

          String movie = "10 Things I Hate About You";
          movie = movie.replaceAll(" ", System.getProperty("line.separator"));
          
          System.out.println(movie);
          

          【讨论】:

            【解决方案5】:

            这是一个做同样事情的单行。

            System.out.println(movie.replaceAll(" ", "\n"));
            

            【讨论】:

              【解决方案6】:

              带有 lambda 的一行:

              System.out.print(
                  Stream.of( movie.split( " " ) ).collect( Collectors.joining( "\n" ) )
               );
              

              joining(…) 在内部使用 java.util.StringJoiner


              …遵循原始 char by char 方法的 lambda:

              movie.codePoints().forEach( c
                  -> System.out.print( c == ' ' ? '\n' : (char)c ) );
              

              【讨论】:

                【解决方案7】:

                你可以使用String.replace(char,char)方法:

                String movie = "Lorem ipsum dolor sit amet";
                String mov = movie.replace(' ', '\n');
                System.out.println(mov);
                

                输出:

                Lorem
                ipsum
                dolor
                sit
                amet
                

                【讨论】:

                  猜你喜欢
                  • 2015-07-30
                  • 1970-01-01
                  • 2019-06-28
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-02-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多