当前位置: 首页 > 知识库问答 >
问题:

有没有一种方法可以在不使用return的情况下将数组的值从一个方法传递到另一个方法?

鲜于裕
2023-03-14

我被困在一个Java编码任务中。我应该为现有程序创建三种方法(askInfocopyInfo,和setArray),让用户将数字输入数组,然后组织并打印该数组AskInfo接收数组作为参数,向用户请求索引值,并将输入的数字量返回为int。CopyInfo将值复制到一个新数组中,该数组的长度为返回的数字量,setArray对数字进行排序。

我的问题是,根据作业,askInfo应该只返回输入的数字量。因此,它将打印的数组值留在方法内部,使得copyInfo无法检索这些值并将其复制到第二个数组中。如果没有编辑主方法的能力,您建议我如何克服这个问题?

主要方法:

    int[] tempArray = new int[100];
    System.out.println("Type in numbers. Type zero to quit.");
    int amountOfNumbers = askInfo(tempArray);

    int[] realArray = new int[amountOfNumbers];
    copyInfo(realArray, tempArray);

    setArray(realArray);

    printArray(realArray);

我的代码:

public static int askInfo (int[] tempArray) { //asks for numbers and assigns them to tempArray, returns the length of realArray
    int count = 0;
    Scanner reader = new Scanner(System.in);
    for (int i =0;i<tempArray.length;i++){
        System.out.print((i+1)+". number: ");
        tempArray[i] = reader.nextInt();
        count++;
        if (tempArray[i] == 0) //stops asking for values if user inputs 0
            return count;
        }
    return count;
    }

public static int[] copyInfo (int[] realArray, int[] tempArray)  { //copies tempArray's values to realArray
    for (int i=0; i<realArray.length;i++){
        realArray[i] = tempArray[i];
    }
    return realArray;
}

public static int[] setArray (int[] realArray) { //sorts realArray from largest value to smallest
    for (int i=0;i<realArray.length;i++){
        for (int j=i+1;j<realArray.length;j++){
            if (realArray[i]<realArray[j]){
                int tmp = realArray[i];
                realArray[i] = realArray[j];
                realArray[j] = tmp;
            }
        }
    }
    return realArray;   
}

现在程序确实编译了,但是数组realArraytemArray的值在askInfo方法之外是空的。请记住,我不能编辑主方法——我只能编辑我写的三个方法。

共有3个答案

巴学潞
2023-03-14

在Java中,数组变量是对数组对象的引用。这意味着当您分配tempArray[i]=reader时。nextInt()askInfo()中,它修改main()中名为tempArray的数组的内容。有关更多信息,请阅读Java?中按值传递或按引用传递的数组?。

卓瀚
2023-03-14

是我还是你错过了printArray方法?除此之外,代码看起来不错。数组是一种引用类型,因此所有方法都可以访问同一个TempArray,即使其中的值是在一个方法中添加的

宰父深
2023-03-14

你写的代码本身是正确的。你不需要任何修改<你说

数组realArraytempArray的值超出askInfo方法的范围是null

那句话根本不是真的
askInfo中,int[]tempArray数组实际上正在被更改
int[]realArray正在有效填充。

我建议你Rest一下,以一种全新的思维回到这个练习上来。

 类似资料:
  • 问题内容: 关于将行旋转为各种数据库的列,有很多文章。他们似乎分为两个阵营,使用案例陈述或使用数据库供应商的内置功能。我正在使用 MySQL ,到目前为止,在任何内置函数上都找不到任何东西,这将使我能够选择任意数量的行值(我想将其转换为列)。如果我不提前知道这些值,则无法构建经常出现在的CASE查询。我想知道在MySQL中是否有类似于其他数据库中称为交叉表或数据透视表的东西: -Postgresq

  • 我真的想知道是否有一种方法可以只从该方法获得另一个方法的值。因为在main方法中,第一个方法已经被调用,而第二个方法需要第一个方法输入的值。 静态int first_Method(int num){ //第二种方法 静态void second_method(){

  • 我试图模拟一个方法,从另一个方法调用,而不使用类对象。在指定的代码中,我想模拟methodA(),它调用methodB(),而不使用对象。 我无法更改现有类中的任何内容。 我已经尝试过: 莫基托。doReturn(“id”)。当(反对)。方法b(员工)

  • 问题内容: 我想从一个类到另一个类调用一个方法,不知道在不扩展包含该方法的类的情况下是否可行。我尝试导入包,那样我认为应该允许使用该方法,因为它是一个公共方法,但是并不成功。 试图使用此链接作为参考,但我不理解(因为它是android的应用。) 伪代码举例说明 问题答案: 其他方法可能是,为其他类创建对象,然后在该对象上调用方法。像下面这样。

  • 我有一个主键,当我尝试插入一些数据时,它生成了自己,但问题是它将生成我之前删除的最后一个 我想在输入新数据时输入生成的id将是17而不是72,依此类推,我使用的是SQL Server2008,帮助:{

  • 我想在我的spring web应用程序中添加几个过滤器,但至少现在不会有任何关于安全性的内容。所以。没有spring-security我所能做的就是在web.xml中定义多个过滤器(定义过滤器的旧方法)。要能够使用spring过滤器链,我需要为我的项目添加spring-security作为依赖项,这似乎很奇怪。也许我做错了什么,而且确实有过滤器链可以在没有spring-security依赖的情况下