从方法返回多个数组

时间:2018-02-22 21:08:10

标签: java arrays methods

我是java的初学者,但我正在努力学习。 这是我正在处理的程序,用户将输入一些值,程序将索引的所有偶数值排序为变量radie,索引的所有奇数值都是高度,无论元素是什么。在下一个方法中,提名者的分母也是如此。但现在我卡住了,不知道如何返回arrayList。我想返回我的新数组,以便我可以在其他方法中使用它们。就像我说我是非常新的java,但发现它很有趣,但现在我需要你的帮助。正如你所看到的那样,我一直在使用瑞典语单词作为外印,对不起。



import java.util.Scanner;
import java.util.ArrayList;

public class program 
{
	private static Scanner keyboard = new Scanner(System.in);
	public static void main(String[] args)
	{
		
		System.out.println("-------------------------------");
		System.out.println("# Test av area- och volymmetod.");
		System.out.println("-------------------------------");
		double result1 = area1(radie);
		double result2 = area2(radie, height);
		double result3 = volumeCone(radie, height);
		System.out.println("Radie = " + radie + "\tHeight = " + height);
		System.out.printf("Basytans area:%11.2f", result1);
		System.out.println();
		System.out.printf("Mantelytans area:%8.2f", result2);
		System.out.println();
		System.out.printf("Volym:%19.2f", result3);
		System.out.println();
	}
	public static ArrayList<Integer> readFirstInputs(int numberOfInputs)
	{
	    System.out.println("Please enter values, Q to quit:");
	    int[] inputs = new int[numberOfInputs];
	    ArrayList<Integer> radie = new ArrayList<Integer>();
	    ArrayList<Integer> height = new ArrayList<Integer>();

	    for(int i = 0; i < inputs.length; i++)
	    {
	        inputs[i] = keyboard.nextInt();

	        if (i % 2 == 0)
	        {
	            radie.add(inputs[i]);
	        }
	        else if (i % 2 != 0)
	        {
	            height.add(inputs[i]);
	        }
	    }
	    return ????? // return radie and height array, how?
	}
	public static ArrayList<Integer> readSecondInputs(int numberOfInputs)
	{
	    System.out.println("Please enter values, Q to quit:");
	    int[] inputs = new int[numberOfInputs];
	    ArrayList<Integer> nominator = new ArrayList<Integer>();
	    ArrayList<Integer> denominator = new ArrayList<Integer>();

	    for(int i = 0; i < inputs.length; i++)
	    {
	        inputs[i] = keyboard.nextInt();

	        if (i % 2 == 0)
	        {
	            nominator.add(inputs[i]);
	        }
	        else if (i % 2 != 0)
	        {
	            denominator.add(inputs[i]);
	        }
	    }
	    return ????; // return nominator and denominator array, how?
	}
    /* Use my different arrays in the methods below. */
	public static double area1(int radie) 
	{
		double areaBas = Math.PI * Math.pow(radie, 2);
		return areaBas;
	}
	public static double area2(int radie, int height)
	{
		double areaMantel = Math.PI * radie * Math.sqrt((Math.pow(radie, 2) + Math.pow(height, 2)));
		return areaMantel;
	}
	public static double volumeCone(int radie, int height)
	{
		double volume = Math.PI * Math.pow(radie, 2) * height / 3;
		return volume;
	}
	public static int fractionToInteger(int nominator, int denominator)
	{
		int amount = nominator / denominator;
		return amount;
	}
	public static int fractionToFraction(int nominator, int denominator)
	{
		int remainingAmount = nominator % denominator;
		return remainingAmount;
	}
}
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

您是否可以使用列表?它的效率更高,因为一旦创建,你就无法改变数组的大小,但如果你改为创建两个空列表,你可以使用列出的.add方法,看起来类似于:

public static List<Integer> readFirstInputs(int numberOfInputs)
{
    System.out.println("Please enter values, Q to quit:");
    int[] inputs = new int[numberOfInputs];
    List<Integer> evens = new List<Integer>();
    List<Integer> odds = new List<Integer>();

    for(int i = 0; i < inputs.length; i++)
    {
        inputs[i] = keyboard.nextInt();

        if (i % 2 == 0)
        {
            evens.add(inputs[i]);
        }
        else if (i % 2 != 0)
        {
            odds.add(inputs[i]);
        }
    }

}

当然我对你想要做什么感到有点困惑,所以你肯定要稍微改变一下,我只是想用这个作为如何使用列表的基本例子。

答案 1 :(得分:0)

如果我理解正确,你想从函数返回一个奇数数组和一个偶数数组来自用户输入。 但是你只返回一个数组,它只是一个用户输入的数组(对于循环中的条件没有逻辑意义)。

据我所知 - 不可能返回2个阵列,但当然有解决方案。例如,您可以返回字典。 如果您选择字典,它将类似于Dictionary<string,object>,并且将包含2个项目,字符串将为“奇数”\“偶数”,并且该对象将是数字的匹配数组({{1} }或int[])。奇数数组的值为“奇数”键,偶数数组在字典中排列“偶数”键的值。

除此之外我在这里出现的两个问题:
1.)您试图使用功能中未定义或甚至未提及的2个变量(偶数奇数)。
2.)在每个条件下你写了返回。这将在第一次迭代时退出循环并运行。

希望这有用。