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

Java 从同一方法返回两个数组?,java,arrays,methods,return,Java,Arrays,Methods,Return,我正试图制作一个程序,读取a市和B市5天的高温。我必须为这些城市制作一个方法,将所有10个值都输入并返回到主方法。我最初有一个方法,将[0]-[4]算作cityA,[5]-[9]算作cityB,但我的教授说这不是他想要的(尽管从技术上来说答案是正确的) 很难看清他的笔迹,但这似乎是他说要做的 编辑-我根据建议将其转换为可变长度参数。仍在努力使返回语句正确,但除此之外,它看起来是我认为应该的 编辑#2-我刚刚意识到字符串cities在main方法中被命名为city。修正了这个问题,但现在我又遇到了

我正试图制作一个程序,读取a市和B市5天的高温。我必须为这些城市制作一个方法,将所有10个值都输入并返回到主方法。我最初有一个方法,将[0]-[4]算作cityA,[5]-[9]算作cityB,但我的教授说这不是他想要的(尽管从技术上来说答案是正确的)

很难看清他的笔迹,但这似乎是他说要做的

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

编辑#2-我刚刚意识到字符串cities在main方法中被命名为city。修正了这个问题,但现在我又遇到了一个错误。返回值丢失?我现在做的和书上说的差不多-书中的例子

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);
}
publicstaticdouble[]获取高温(字符串cityName,int numberOfDays){
扫描仪键盘=新扫描仪(System.in);
double[]HighsforneyWork=获取高温(“纽约”,5);
对于(int i=0;i
新代码

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];
            }
        }
    }
}
包程序10a;
导入java.util.Scanner;
公共类比较{
公共静态void main(字符串[]args){
双精度[]温度=新双精度[5];
字符串[]城市=新字符串[]{“迈阿密”、“达拉斯”;
getCityTemp(临时,城市);
}
公共静态双[]getCityTemp(双[]临时,字符串…城市){
扫描仪键盘=新扫描仪(System.in);
如果(cities.length==0){
System.out.println(“未传递参数”);
返回;
}
字符串cityA=城市[0];
对于(int i=0;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;
}
publicstaticdouble[]getCityHighA(double[]cityA){
扫描仪键盘=新扫描仪(System.in);
对于(int i=0;i

这是最明智的选择,还是可以使用相同的方法将cityA和cityB传递回主方法?请注意,我还没有接触到对象(我在使用对象的地方看到过类似的主题,我不知道如何进行)谢谢!

而不是尝试从一个方法返回2个数组,考虑两次使用相同的方法。

也许把它参数化,一个la

public double[] getHighTemperatures(String cityName, int numberOfDays)
因此,你可以传递任意数量的城市,任意数量的天数,而不是将一个方法硬编码为城市a,另一个硬编码为城市B,而不是将其硬编码为5元素数组,你只需每次捕获结果

double[] highsForNewYork = ...
double[] highsForLosAngeles = ...

不要尝试从一个方法返回2个数组,而是考虑如何使用相同的方法两次。

也许把它参数化,一个la

public double[] getHighTemperatures(String cityName, int numberOfDays)
因此,你可以传递任意数量的城市,任意数量的天数,而不是将一个方法硬编码为城市a,另一个硬编码为城市B,而不是将其硬编码为5元素数组,你只需每次捕获结果

double[] highsForNewYork = ...
double[] highsForLosAngeles = ...

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

public static double[][] getCityHighs(...) {
    double[] cityA = new double[5];
    //....
    double[] cityB = new double[5];
    //....
    return new double[][]{cityA, cityB};
}
/* pseudo-code! */
city[][];
city[0][0] = 1; city[0][1] = 2; /* ... */
city[1][0] = 10; city[1][1] = 5; /* ... */
double[0]将等于cityA,double[1]将等于cityB。因此,如果您想获得cityA的第一个值,则需要执行数组[0][0]

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

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

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

public static double[][] getCityHighs(...) {
    double[] cityA = new double[5];
    //....
    double[] cityB = new double[5];
    //....
    return new double[][]{cityA, cityB};
}
/* pseudo-code! */
city[][];
city[0][0] = 1; city[0][1] = 2; /* ... */
city[1][0] = 10; city[1][1] = 5; /* ... */
double[0]将等于cityA,double[1]将等于cityB。因此,如果您想获得cityA的第一个值,则需要执行数组[0][0]

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

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

您的
for
循环非常循环。:)

i
变量存在是有原因的。请执行以下操作,而不是您现在正在执行的操作:

for (int i = 0; i < cityB.length; ++i) {
    System.out.printf("Enter temperature #%d for City B: ", (i + 1));  // I _think_ there's printf() in Java and it works like C's...
    cityB[i] = keyboard.nextDouble();  // note the use of `i`
}
for(int i=0;i
您的
for
循环非常循环。:)

i
变量存在是有原因的。请执行以下操作,而不是您现在正在执行的操作:

for (int i = 0; i < cityB.length; ++i) {
    System.out.printf("Enter temperature #%d for City B: ", (i + 1));  // I _think_ there's printf() in Java and it works like C's...
    cityB[i] = keyboard.nextDouble();  // note the use of `i`
}
for(int i=0;i
您应该使用二维数组,其中第一个维度是城市,第二个维度是一角硬币
public static double[] getCityTemp(String city, int days)
{
    Scanner keyboard = new Scanner(System.in);
    double[] highs = new double[days];

    System.out.print("Enter " + days + " temperatures for " + city + ": ");

    for (int i = 0; i < days; i++) {
        highs[i] = keyboard.nextDouble();
    }

    return highs;
}
public static void printCityTemp(String city, double[] highs)
{
    System.out.print("Highs for " + city + " were: ");

    for (double high : highs) {
        System.out.print(high + " ");
    }

    System.out.println("");
    return;
}