0

我正在尝试从“for”循环中发送一个变量,并将其保存到另一个类中的字符串中,但是在最后一个类中进行系统打印时,我只是得到了最新的输入。现在我怀疑这是因为;

ProcessInput c = new ProcessInput();

但我终其一生都无法理解我是如何解决这个特定问题的。

我意识到如果我将最新的输入附加到字符串中,并在循环完成后发送字符串,则可以避免这种情况。唉,我的任务不是这样。另外我对此很陌生,所以要温柔。

public class Query {

    private void question() {

        ProcessInput c = new ProcessInput();
        String feedback = "";
        for(int i = 0; i < 10; i ++) {
            System.out.print("Input information " + (i + 1) + "/10: ");
            Scanner userInput = new Scanner(System.in);
            feedback = userInput.next();
            c.paste(feedback);
        }
    }
}


public class ProcessInput {

    public void paste(String feedback) {
        String line = "";
        line += feedback + " ";
        System.out.println(line);
    }
}
4

2 回答 2

0

line在方法的本地范围内,因此每次调用方法时都会重置。您需要将其设为实例变量,这样对于创建的每个实例,它都会保留该实例的值。

public class ProcessInput {
    String line = ""; // outside the paste method, in the class
    public void paste(String feedback) {
        line += feedback;
        System.out.println(line);
    }
}
于 2013-10-31T05:21:49.307 回答
0

您必须了解的概念是java是按值传递而不是引用,因此您只是将每次输入的新输入传递给“粘贴”方法。

简单的解决方案

public class Query {

    private void question() {

        ProcessInput c = new ProcessInput();
        String feedback = "";
        for(int i = 0; i < 10; i ++) {
            System.out.print("Input information " + (i + 1) + "/10: ");
            Scanner userInput = new Scanner(System.in);
            feedback = feedback+userInput.next();
            c.paste(feedback);
        }
    }

public class ProcessInput {

    public void paste(String feedback) {       
        System.out.println(feedback);
        }
    }

更重要的是您了解在 java 中方法之间传递值的基本概念。

于 2013-10-31T05:29:32.167 回答