我正在使用扫描仪类来平均数字。我正在使用一种方法来进行平均。如果有超过20个args,我不希望程序运行。我似乎无法让这个工作。我是java的新手并且正在努力学习。
我感谢任何帮助。谢谢!
import java.util.Scanner;
class programTwo {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
double x = 0.00d;
if (args != null) {
System.out.println ("Enter your numbers to be averaged. Remember no more than 20!:");
x = scan.nextInt();
if (x <= 21) {
System.out.println("Please do not add more than 20 numbers");
}
} else {
}
}
public double average(double [] values) {
double average = 0.0;
if ((values != null) && (values.length > 0)) {
for (double value : values) {
average += value;
}
average /= values.length;
}
return average;
}
}
答案 0 :(得分:2)
只需运行一个while循环,该循环在满足20“args”时或在输入-1
之类的中断时中断。然后,如果您正在使用双值,则应使用x = scan.nextDouble()
。您也没有将值插入数组的位置。在while循环结束时,您可以将x
放入双精度数组中。
private double x;
private double Foo[] = new Foo[20];
private int this = 0; //Your counter
while(this < 20 && x != -1)
{
x = scan.nextDouble();
Foo[this++] = x;
}
然后通过将数组中的值相加并除以(双)此
来执行public double Average
答案 1 :(得分:1)
这是一个解决方案(清理大量代码),在程序启动后将所有数字放在一行:
import java.util.Scanner;
class programTwo {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
double values[] = new double[20];
int count = 0;
System.out.println ("Enter your numbers to be averaged. Remember no more than 20!:");
String inputs = scan.nextLine();
scan = new Scanner(inputs); // create a new scanner out of our single line of input
while(scan.hasNextDouble())
{
if(count == 20)
{
System.out.println("You entered too many numbers! Fail.");
return;
}
values[count] = scan.nextDouble();
count += 1;
}
System.out.println("Your average is: " + average(values, count));
}
public static double average(double [] values, int count) {
double average = 0.0;
for (double value : values) {
average += value;
}
average /= count;
return average;
}
}
我认为你可能想要使用传递给main的args,因为你使用了null检查,所以你想要运行你的程序:
java programTwo num1 num2 num3 num4 num5
等。如果是这种情况,我们有另一种解决方案:
class programTwo {
public static void main (String[] args) {
if(args.length > 20)
{
System.out.println("You entered too many numbers! Fail.");
return;
}
double values[] = new double[args.length];
for(int i=0; i< args.length; ++i)
values[i] = Double.valueOf(args[i]);
System.out.println("Your average is: " + average(values));
}
public static double average(double [] values) {
double average = 0.0;
for (double value : values) {
average += value;
}
average /= values.length;
return average;
}
}
答案 2 :(得分:0)
args != null
检查是不必要的。实现目标的一种方法是接受数字while
如果到目前为止输入的数量小于20,则扫描器具有下一个数字(可能是scanner.hasNext()
)和break
。双数的数量是未知的,你最好使用ArrayList。
List<Double> doubles = new ArrayList<Double>();
并在doubles
doubles.add(x);
然后将其传递给一个平均arraylist值的方法。