java - 从同一个方法返回两个数组?

标签 java arrays methods return

我正在尝试编写一个程序来读取 A 市和 B 市 5 天的高温。我必须为城市制定一个方法,该方法将获取所有 10 个值并将它们返回给主要方法。我最初只有一种方法可以将 [0]-[4] 计为 cityA,将 [5]-[9] 计为 cityB,但我的教授说这不是他想要的(即使答案在技术上是正确的)。

很难看清他的笔迹,但这似乎就是他的意思。

编辑 - 我根据建议将它变成了可变长度参数。仍在努力使返回语句正确,但除此之外,它看起来像我认为应该的那样。

编辑#2 - 我刚刚意识到字符串城市在主要方法中被命名为城市。解决了这个问题,但现在我又遇到了另一个错误。缺少返回值?我现在几乎按照书上说的做 - 书中的例子......

printMax(new double[] {1, 2, 3});
if (numbers.length == 0) {
System.out.println("No argument passed");
return;

________最新代码

public static double[] getHighTemperatures(String cityName, int numberOfDays) {
    Scanner keyboard = new Scanner(System.in);
    double[] highsForNewYork = getHighTemperatures("New York", 5);
    for (int i = 0; i < numberOfDays; i++)
    highsForNewYork[i] = keyboard.nextDouble();
    return(highsForNewYork);
}

________新代码

package program10a;

import java.util.Scanner;

public class compareCities {

    public static void main(String[] args) {
        double[] temp = new double[5];
        String[] cities = new String[]{"Miami", "Dallas";
        getCityTemp(temp, cities);
    }

    public static double[] getCityTemp(double[] temp, String... cities) {
        Scanner keyboard = new Scanner(System.in);
        if (cities.length == 0) {
            System.out.println("No argument passed.");
            return;
        }
        String cityA = cities[0];

        for (int i = 0; i < temp.length; i++) {
            System.out.print("Enter 5 temperatures for City A. ");
            temp[i] = keyboard.nextDouble();
            if (i < cities.length) {
                cityA = cities[i];
            }
        }

        String cityB = cities[0];

        for (int i = 0; i < temp.length; i++) {
            System.out.print("Enter 5 temperatures for City B. ");
            temp[i] = keyboard.nextDouble();
            if (i < cities.length) {
                cityB = cities[i];
            }
        }
    }
}

________ 下面是旧代码

public static double[] getCityHighA(double[] cityA) {
    Scanner keyboard = new Scanner(System.in);
    for (int i = 0; i < cityA.length; i++) {
        System.out.print("Enter 5 temperatures for City A. ");
        cityA[0] = keyboard.nextDouble();
        cityA[1] = keyboard.nextDouble();
        cityA[2] = keyboard.nextDouble();
        cityA[3] = keyboard.nextDouble();
        cityA[4] = keyboard.nextDouble();
        break;
    }
    return cityA;
}

public static double[] getCityHighB(double[] cityB) {
    Scanner keyboard = new Scanner(System.in);
    for (int i = 0; i < cityB.length; i++) {
        System.out.print("Enter 5 temperatures for City B. ");
        cityB[0] = keyboard.nextDouble();
        cityB[1] = keyboard.nextDouble();
        cityB[2] = keyboard.nextDouble();
        cityB[3] = keyboard.nextDouble();
        cityB[4] = keyboard.nextDouble();
        break;
    }
    return cityB;
}

这是最明智的选择,还是可以使用相同的方法将 cityA 和 cityB 都传递回 main 方法?请注意,我还没有接触到对象(我已经看到使用对象的类似主题,但我不明白如何去做)。谢谢!

最佳答案

你可以制作一个二维数组:

public static double[][] getCityHighs(...) {
    double[] cityA = new double[5];
    //....
    double[] cityB = new double[5];
    //....
    return new double[][]{cityA, cityB};
}

double[0] 等于 cityA,double[1] 等于 cityB。所以如果你想获得 cityA 的第一个值,那么你会做 array[0][0];

或者您可以创建一个类来存储这两个城市:

class cities {
    double[] cityA;
    double[] cityB;
}

关于java - 从同一个方法返回两个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453762/

相关文章:

Java:字节到整数数学求和转换。相同的操作会导致允许和不允许的操作

linux 中的 java ${user.home} 变量

arrays - 在 Excel 中将类型字符串数组复制到范围 - 限定符无效

java - 通过将下一项移动到其位置来删除数组中的一项

c - 这个 printf() 函数有多少个参数?

javascript - React-native get方法返回值

java - 如何让 Jersey Test/Client 不填写默认的 Accept header ?

java.io.ioException : read failed, 套接字可能关闭或超时 Java Android Studio

python - 在 numpy(子)数组中除以零

python - "<method> takes no arguments (1 given)"但我没有给