从 java 中的数组中查找最小值
Finding smallest value from array in java
我正在尝试从数组中的用户输入中获取总和、平均值、最大值和最小值。 sum、average 和 max 给出了正确的输出。但是最小值不起作用。我哪里做错了,有人能帮我找出来吗?
import java.util.Scanner;
public class minMaxSumAverage {
public static void main(String args[]) {
int n, sum = 0, max, min;
double average = 0;
Scanner s = new Scanner(System.in);
System.out.println("Enter elements you want to input in array: ");
n = s.nextInt();
int a[] = new int[n];
max = a[0];
min = a[0];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
sum += a[i];
average = (double) sum/a.length;
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
System.out.println("Sum is: " + sum);
System.out.println("Average is: " + average);
System.out.println("Max is: " + max);
System.out.println("Min is: " + min);
}
}
输出:
Enter elements you want to input in array:
5
Enter all the elements:
25
5
10
6
4
Sum is: 50
Average is: 10.0
Max is: 25
Min is: 0
最小值应为 4。
因为min初始化为0。
在你的循环中你只是问你当前的数字是否小于 0.
再次尝试将数组的第一个值指定为最小值。
那么应该可以了。
int a[] = new int[n];
max = a[0];
min = a[0];
您创建了一个空数组a
。 max 和 min 都初始化为 0。这对 max 工作正常,但是给你你看到的 min 的结果,因为你创建的数组中没有比零更小的东西。
要解决此问题,请在用值填充数组后将行 min = a[0];
添加到 for 循环中,例如
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
sum += a[i];
average = (double) sum/a.length;
min = a[0];
//if-statements here
然后,min = a[0]
将不再是零,而是填充数组的第一个值。
作为替代方案,您可能需要考虑 Stream...
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.println("Enter count elements you want to input in array: ");
int n = s.nextInt();
int a[] = new int[n];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
}
s.close();
IntSummaryStatistics iss = Arrays.stream(a).summaryStatistics();
System.out.println("Sum is: " + iss.getSum());
System.out.println("Average is: " + iss.getSum()/iss.getCount());
System.out.println("Max is: " + iss.getMax());
System.out.println("Min is: " + iss.getMin());
}
从 Java-8 您可以使用流在一行中完成此操作:
int[] a = new int[] { 20,11,2,3,4,7,8,90 };
int min = Arrays.stream(a).min().getAsInt();
获取最大元素,只需将.min()
替换为.max()
求和:Arrays.stream(a).mapToInt(Integer::intValue).sum();
请参考下面的代码,了解最小值、最大值、总和、平均值功能:
List<Integer> intList= Arrays.asList(70, 80, 10, 20, 40, 50);
Integer ans=0;
int sum1= intList.stream().reduce(ans, (x,y) -> x+y);
System.out.println(sum1);
int sum2= intList.stream().reduce(ans, Integer::sum);
System.out.println(sum2);
int max= intList.stream().max(Integer::compare).get();
System.out.println(max);
int min= intList.stream().min(Integer::compare).get();
System.out.println(min);
Double avg= intList.stream().collect(Collectors.averagingInt(x-> x));
System.out.println(avg);
我已经更新了你的代码。请检查以下代码以从所有元素列表中获取最小值。
输入:
在数组中输入您要输入的元素:
5
输入所有元素:
25
5
10
6
4
输出:
总数为:50
平均值为:10.0
最大值为:25
最小值为:4
Scanner scan = null;
try {
int n, sum = 0, max, min;
double average = 0;
scan = new Scanner(System.in);
System.out.println("Enter elements you want to input in array: ");
n = scan.nextInt();
int a[] = new int[n];
max = a[0];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = scan.nextInt();
sum += a[i];
average = (double) sum/a.length;
if (a[i] > max) {
max = a[i];
}
/**
// from here remove logic for get min value.
if (a[i] < min) {
min = a[i];
}
**/
}
min = a[0];
for(int i=0;i<a.length;i++){
if(a[i] < min){
min = a[i];
}
}
System.out.println("Sum is: " + sum);
System.out.println("Average is: " + average);
System.out.println("Max is: " + max);
System.out.println("Min is: " + min);
}
catch (Exception ex) {
ex.printStackTrace();
}finally{
scan.close();
}
我正在尝试从数组中的用户输入中获取总和、平均值、最大值和最小值。 sum、average 和 max 给出了正确的输出。但是最小值不起作用。我哪里做错了,有人能帮我找出来吗?
import java.util.Scanner;
public class minMaxSumAverage {
public static void main(String args[]) {
int n, sum = 0, max, min;
double average = 0;
Scanner s = new Scanner(System.in);
System.out.println("Enter elements you want to input in array: ");
n = s.nextInt();
int a[] = new int[n];
max = a[0];
min = a[0];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
sum += a[i];
average = (double) sum/a.length;
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
System.out.println("Sum is: " + sum);
System.out.println("Average is: " + average);
System.out.println("Max is: " + max);
System.out.println("Min is: " + min);
}
}
输出:
Enter elements you want to input in array:
5
Enter all the elements:
25
5
10
6
4
Sum is: 50
Average is: 10.0
Max is: 25
Min is: 0
最小值应为 4。
因为min初始化为0。 在你的循环中你只是问你当前的数字是否小于 0.
再次尝试将数组的第一个值指定为最小值。
那么应该可以了。
int a[] = new int[n];
max = a[0];
min = a[0];
您创建了一个空数组a
。 max 和 min 都初始化为 0。这对 max 工作正常,但是给你你看到的 min 的结果,因为你创建的数组中没有比零更小的东西。
要解决此问题,请在用值填充数组后将行 min = a[0];
添加到 for 循环中,例如
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
sum += a[i];
average = (double) sum/a.length;
min = a[0];
//if-statements here
然后,min = a[0]
将不再是零,而是填充数组的第一个值。
作为替代方案,您可能需要考虑 Stream...
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.println("Enter count elements you want to input in array: ");
int n = s.nextInt();
int a[] = new int[n];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = s.nextInt();
}
s.close();
IntSummaryStatistics iss = Arrays.stream(a).summaryStatistics();
System.out.println("Sum is: " + iss.getSum());
System.out.println("Average is: " + iss.getSum()/iss.getCount());
System.out.println("Max is: " + iss.getMax());
System.out.println("Min is: " + iss.getMin());
}
从 Java-8 您可以使用流在一行中完成此操作:
int[] a = new int[] { 20,11,2,3,4,7,8,90 };
int min = Arrays.stream(a).min().getAsInt();
获取最大元素,只需将.min()
替换为.max()
求和:Arrays.stream(a).mapToInt(Integer::intValue).sum();
请参考下面的代码,了解最小值、最大值、总和、平均值功能:
List<Integer> intList= Arrays.asList(70, 80, 10, 20, 40, 50);
Integer ans=0;
int sum1= intList.stream().reduce(ans, (x,y) -> x+y);
System.out.println(sum1);
int sum2= intList.stream().reduce(ans, Integer::sum);
System.out.println(sum2);
int max= intList.stream().max(Integer::compare).get();
System.out.println(max);
int min= intList.stream().min(Integer::compare).get();
System.out.println(min);
Double avg= intList.stream().collect(Collectors.averagingInt(x-> x));
System.out.println(avg);
我已经更新了你的代码。请检查以下代码以从所有元素列表中获取最小值。
输入:
在数组中输入您要输入的元素:
5
输入所有元素:
25
5
10
6
4
输出:
总数为:50
平均值为:10.0
最大值为:25
最小值为:4
Scanner scan = null;
try {
int n, sum = 0, max, min;
double average = 0;
scan = new Scanner(System.in);
System.out.println("Enter elements you want to input in array: ");
n = scan.nextInt();
int a[] = new int[n];
max = a[0];
System.out.println("Enter all the elements:");
for (int i = 0; i < n; i++) {
a[i] = scan.nextInt();
sum += a[i];
average = (double) sum/a.length;
if (a[i] > max) {
max = a[i];
}
/**
// from here remove logic for get min value.
if (a[i] < min) {
min = a[i];
}
**/
}
min = a[0];
for(int i=0;i<a.length;i++){
if(a[i] < min){
min = a[i];
}
}
System.out.println("Sum is: " + sum);
System.out.println("Average is: " + average);
System.out.println("Max is: " + max);
System.out.println("Min is: " + min);
}
catch (Exception ex) {
ex.printStackTrace();
}finally{
scan.close();
}