Java 使用.concat进行循环连接,而不使用just循环

Java 使用.concat进行循环连接,而不使用just循环,java,Java,我想知道是否有办法将String::concat与循环一起使用,而不是使用StringBuilder/StringBuffer 我这样试过,但没用。有人能帮忙解决这个问题吗?或者给我一些建议让我自己试试 public class multiConcat { public static void main(String[] args) { int num = 0; String finish = ""; Scanner reader

我想知道是否有办法将
String::concat
与循环一起使用,而不是使用
StringBuilder
/
StringBuffer

我这样试过,但没用。有人能帮忙解决这个问题吗?或者给我一些建议让我自己试试

    public class multiConcat {
    public static void main(String[] args) {
        int num = 0;
        String finish = "";
        Scanner reader = new Scanner(System.in);

        System.out.println("Type a word: ");
        String state = reader.next();
        System.out.println("Number of Concatenation: ");
        num = reader.nextInt();
        finish = state.concat(state);

            for (int i = 0; i == num; i++) {
              finish.concat(state);
            }

        System.out.println(finish);

    }
}
我认为这将是与
x=x+1
相同的想法,即不断覆盖值

多谢各位

你的意思是这样

        for (int i = 0; i == num; i++) {
            finish = finish.concat(state);
        }
finish.concat(state)
返回一个新字符串,因此您必须为
finish
变量赋值,以便保留对新字符串的引用:

finish=finish.concat(状态)

您已经在循环之前执行了此操作,但在循环内部,您没有使用返回值
concat
执行任何操作,因此循环不会更改任何内容。

很少更改

1.)循环不正确

应该如下所示,如果
num>1
,则在循环中串联

 if (num > 1) {
            for (int i = 0 ; i < num ; i++) {
                finish = finish.concat(state);
            }
        } else {
            finish = finish.concat(state);
        }
完整程序

public class multiConcat {
    public static void main(String[] args) {
        int num = 0;
        String finish = "";
        Scanner reader = new Scanner(System.in);

        System.out.println("Type a word: ");
        String state = reader.next();
        System.out.println("Number of Concatenation: ");
        num = reader.nextInt();

        if (num > 1) {
            for (int i = 0 ; i < num ; i++) {
                finish = finish.concat(state);
            }
        } else {
            finish = finish.concat(state);
        }

        System.out.println(finish);

    }
}

您可以使用下面的代码

字符串是不可变的
,因此您必须存储返回的值

String finish = new String();
finish = finish.concat("Any Value");
使用
StringBuilder
StringBuffer
可以这样做

StringBuilder finish = new StringBuilder();
finish.append(state);

StringBuffer finish = new StringBuffer();
finish.append(state);

你能把你得到的错误贴出来吗?而且,第一个短语有点混乱,考虑得更清楚。我没有任何编译错误。我想做的是,如果我在单词中输入“hi”,并且我想对我的世界进行4次concat,那么结果会是“hihihi”对不起,语法不好,concat不会修改字符串。使用
finish=finish.concat(状态)。并删除该行
finish=state.concat(state)忽略if语句对不起。。。我发错代码了。。我试着自己做一些事情,我试着让它这样,如果人们希望它连接不到两次,它只会输出word@JasonKim好的,你可以为
@JasonKim设置一个过滤器。如果答案能解决你的问题,请投票/接受答案。我还有两个question@JasonKim您没有解决for循环中的问题,这是我在回答中的意思。谢谢你的回答。下次我将尝试使用Stringbuilder和Stringbuffer:DNo问题。但有一条建议,如果要更改字符串值,最好使用StringBuilder或Stringbuffer。因为每次调用concat时,都会为该字符串分配新内存,因为该字符串是不可变的。
String finish = new String();
finish = finish.concat("Any Value");
StringBuilder finish = new StringBuilder();
finish.append(state);

StringBuffer finish = new StringBuffer();
finish.append(state);