【发布时间】:2014-04-15 02:12:06
【问题描述】:
我是 Java 新手。我有一个需要以下内容的作业: 开发一个允许用户将数字输入数组的程序。输入如下:
用户将输入要输入到数组中的整数总数。
然后用户将输入该数量的唯一整数(负数或正数)。不允许输入的值的数量超过数组大小。
开发方法以:
对数组进行排序
确定最大值
确定最小值
计算平均值(double)
下面的代码确实可以运行,但它显示我输入的最小数字为 0,这是不正确的,平均值确实以双精度格式显示,但它总是将数字四舍五入(3.0 而不是 3.3)。有人可以让我知道我做错了什么以及如何解决这个问题。我已经在谷歌上搜索了 3 天的问题,但找不到我哪里出错了。
import java.util.Scanner;
import java.util.Arrays;
public class UserArray2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//allow user input;
System.out.println("How many numbers do you want to enter?");
int num = input.nextInt();
int numbers[] = new int[num];
int low = numbers[0];
int max = numbers[0];
int sum = 0;
double avgNum;
System.out.println("Enter the " + num + " numbers now.");
for (int i = 0 ; i < numbers.length; i++ ) {
numbers[i] = input.nextInt();
}
//sort
System.out.println("The numbers you entered have been sorted from lowest to greatest:");
Arrays.sort( numbers );
for ( int i = 0 ; i < numbers.length ; i++ ) {
System.out.println(numbers[i]);
}
//max
for (int counter = 1; counter < numbers.length; counter++)
{
if (numbers[counter] > max)
{
max = numbers[counter];
}
}
//lowest
for (int counter = 1; counter < numbers.length; counter++)
{
if (numbers[counter] < low)
{
low = numbers[counter];
}
}
//average
for (int i : numbers)
sum += i;
avgNum = sum/numbers.length;
System.out.println("The largest number on your list is: " + max);
System.out.println("The lowest number on your list is: " + low);
System.out.println("The average of the list of numbers is: " + avgNum);
}
public static void printArray(int arr[]){
int n = arr.length;
for (int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
}
}
【问题讨论】: