我正在尝试编写一个程序来读取 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/