我是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;
答案 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.)在每个条件下你写了返回。这将在第一次迭代时退出循环并运行。
希望这有用。