Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何将每个扫描仪输入存储在';对于';循环到另一个方法?_Java_Loops - Fatal编程技术网

在java中,如何将每个扫描仪输入存储在';对于';循环到另一个方法?

在java中,如何将每个扫描仪输入存储在';对于';循环到另一个方法?,java,loops,Java,Loops,我试图从“for”循环中发送一个变量,并将其保存到另一个类中的字符串中,但在最后一个类中执行系统打印时,我只得到了最新的输入。现在我怀疑这是因为 ProcessInput c = new ProcessInput(); 但我一辈子都无法理解我是如何解决这个问题的 我意识到,如果我将最新的输入附加到字符串,并在循环完成后发送该字符串,则可以避免这种情况。唉,我的任务不是这样的。而且我在这方面还是新手,所以要温柔 public class Query { private void que

我试图从“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);
    }
}
公共类查询{
私人问题({
ProcessInput c=新的ProcessInput();
字符串反馈=”;
对于(int i=0;i<10;i++){
系统输出打印(“输入信息”+(i+1)+“/10:”;
扫描仪用户输入=新扫描仪(System.in);
feedback=userInput.next();
c、 粘贴(反馈);
}
}
}
公共类ProcessInput{
公共空白粘贴(字符串反馈){
字符串行=”;
行+=反馈+“”;
系统输出打印项次(行);
}
}

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

public class ProcessInput {
    String line = ""; // outside the paste method, in the class
    public void paste(String feedback) {
        line += feedback;
        System.out.println(line);
    }
}

您必须理解的概念是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);
        }
    }
公共类查询{
私人问题({
ProcessInput c=新的ProcessInput();
字符串反馈=”;
对于(int i=0;i<10;i++){
系统输出打印(“输入信息”+(i+1)+“/10:”;
扫描仪用户输入=新扫描仪(System.in);
反馈=反馈+用户输入。下一步();
c、 粘贴(反馈);
}
}
公共类ProcessInput{
公共无效粘贴(字符串反馈){
系统输出打印(反馈);
}
}

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

我谦恭地敬佩。同时,我对解决方案的简单性感到畏缩。谢谢:)很高兴能提供帮助!:)