旋转列表<字符>并保持字数

时间:2018-11-21 08:51:41

标签: java string arraylist rotation

我很想解决这个问题,希望能得到一些反馈。

我目前正在尝试将一个字符串逐行旋转到右侧(输入来自文件)。输入可能有很多行,因此需要每行进行一次旋转。 例如,将其向右旋转5 “和换行符^ $ @” 最终将是:“ ^ $ @和换行符”

现在输入我的代码: 我正在使用一个List并已完成以下操作(请原谅随机打印行,正在调试旧方法:]):

 private static List<String> rflag(String value, List<String> lines) {
    List<String> newLines = new ArrayList<>();


    int rvalue = Integer.parseInt(value);

    for (String line : lines) {
        StringBuilder sb = new StringBuilder();

        if (!line.isEmpty()) {
            List <Character> chars=  new ArrayList<>();

            for(char ch: line.toCharArray()){
                chars.add(ch);
            }

            Collections.rotate(chars, rvalue);


            sb.append(chars);
           // System.out.println("sb" + sb);
            String text = sb.toString()
                    .replace(",", "")  //remove the commas
                    .replace("[", "")  //remove the right bracket
                    .replace("]", "")  //remove the left bracket
                    .trim();
            newLines.equals(text);
            //System.out.println("nl" + newLines); //taking a look at output
           //System.out.println("t-" + text); //taking a look at output

        }

    }


    return newLines;
}

如果我输入类似“ abcXYZ”的内容,那么我的输出最终将是[b,c,X,Y,Z,a]或bcXYZa,并且删除了方括号和逗号。

我的主要问题是,尽管我可以删除方括号和逗号,但是我并没有保留输入中的行或单词。有人可以向我提出一些想法(或替代方法)吗?我觉得我可能想得太多了,但是我花了很多时间,变得沮丧:\

非常感谢。

1 个答案:

答案 0 :(得分:0)

更改

`.replace(",", "")  //remove the commas`

`.replace(", ", "")  //remove the commas`

使此代码按预期工作。

`System.out.println(rflag("2", Arrays.asList("and line breaks")));//output: ksand line brea`

(“和换行符^ $ @”,当前输出为“ ^ $ @ a n d l i n e b r e a k s”,但应为“ ^ $ @和换行符”。)