[英]Java: Finding the highest value in an array
出于某种原因,当我试图只打印一个值(即 11.3)时,这段代码为数组中的最高值打印了三个值。 有人可以向我解释为什么这样做吗?
谢谢。
import java.util.Scanner;
public class Slide24
{
public static void main (String [] args)
{
Scanner in = new Scanner(System.in);
double[] decMax = {-2.8, -8.8, 2.3, 7.9, 4.1, -1.4, 11.3, 10.4,
8.9, 8.1, 5.8, 5.9, 7.8, 4.9, 5.7, -0.9, -0.4, 7.3, 8.3, 6.5, 9.2,
3.5, 3, 1.1, 6.5, 5.1, -1.2, -5.1, 2, 5.2, 2.1};
double total = 0, avgMax = 0;
for (int counter = 0; counter < decMax.length; counter++)
{
total += decMax[counter];
}
avgMax = total / decMax.length;
System.out.printf("%s %2.2f\n", "The average maximum temperature for December was: ", avgMax);
//finds the highest value
double max = decMax[0];
for (int counter = 1; counter < decMax.length; counter++)
{
if (decMax[counter] > max)
{
max = decMax[counter];
System.out.println("The highest maximum for the December is: " + max);
}
}
}
}
每当它找到一个高于当前最大值的数字时打印出一个数字(在你的情况下恰好发生三次。)将打印件移到for循环之外你应该是好的。
for (int counter = 1; counter < decMax.length; counter++)
{
if (decMax[counter] > max)
{
max = decMax[counter];
}
}
System.out.println("The highest maximum for the December is: " + max);
要从数组中找到最高(最大)或最低(最小)值,这可以为您提供正确的方向。 以下是从基本数组中获取最高值的示例代码。
public int maxValue(int array[]){
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++) {
list.add(array[i]);
}
return Collections.max(list);
}
要获得最低值,您可以使用
Collections.min(list)
public int maxValue(int array[]){
int max = Arrays.stream(array).max().getAsInt();
return max;
}
现在,以下行应该有效。
System.out.println("The highest maximum for the December is: " + maxValue(decMax));
扫描完所有内容后,您需要打印出最大值:
for (int counter = 1; counter < decMax.length; counter++)
{
if (decMax[counter] > max)
{
max = decMax[counter];
// not here: System.out.println("The highest maximum for the December is: " + max);
}
}
System.out.println("The highest maximum for the December is: " + max);
如果您正在寻找最简单,最简单的方法来执行有关数组的各种操作,那么使用Collections类非常有用(可从https://docs.oracle.com/javase/7/docs/api/获取文档) java / util / Collections.html ),操作范围从查找最大值,最小值,排序,反向顺序等。
使用集合从数组中查找最大值的简单方法:
Double[] decMax = {-2.8, -8.8, 2.3, 7.9, 4.1, -1.4, 11.3, 10.4, 8.9, 8.1, 5.8, 5.9, 7.8, 4.9, 5.7, -0.9, -0.4, 7.3, 8.3, 6.5, 9.2, 3.5, 3.0, 1.1, 6.5, 5.1, -1.2, -5.1, 2.0, 5.2, 2.1};
List<Double> a = new ArrayList<Double>(Arrays.asList(decMax));
System.out.println("The highest maximum for the December is: " + Collections.max(a));
如果您有兴趣找到最小值,类似于查找最大值:
System.out.println(Collections.min(a));
排序列表最简单的一行:
Collections.sort(a);
或者使用Arrays类对数组进行排序:
Arrays.sort(decMax);
但是Arrays类没有直接引用最大值的方法,对它进行排序并引用最后一个索引是最大值,但请记住,按上述两种方法排序的复杂度为O(n log n) 。
与其他人建议的相同,只是提到更清洁的方式:
int max = decMax[0];
for(int i=1;i<decMax.length;i++)
max = Math.max(decMax[i],max);
System.out.println("The Maximum value is : " + max);
你在for()
循环中有你的print()语句,它应该在它之后只打印一次。 它目前的方式,每次最大变化时都会打印出max
。
一个更短的解决方案,拥有数组的最大值:
double max = Arrays.stream(decMax).max(Double::compareTo).get();
您只是将零元素与其余元素进行比较,因此它将打印它将包含的最后一个值,在您的情况下,同样的问题正在发生。 要比较我们必须交换值的每个元素,如:
double max = decMax[0];
for (int counter = 1; counter < decMax.length; counter++){
if(max<decMax[i]){
max=decMax[i]; //swapping
decMax[i]=decMax[0];
}
}
System.out.println("The max value is "+ max);
希望对你有帮助
您可以使用接受数组的函数并在其中查找最大值。 我使它通用,所以它也可以接受其他数据类型
public static <T extends Comparable<T>> T findMax(T[] array){
T max = array[0];
for(T data: array){
if(data.compareTo(max)>0)
max =data;
}
return max;
}
你可以写这样的。
import java.util.Scanner;
class BigNoArray{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("Enter how many array element");
int n=sc.nextInt();
int[] ar= new int[n];
System.out.println("enter "+n+" values");
for(int i=0;i<ar.length;i++){
ar[i]=sc.nextInt();
}
int fbig=ar[0];
int sbig=ar[1];
int tbig=ar[3];
for(int i=1;i<ar.length;i++){
if(fbig<ar[i]){
sbig=fbig;
fbig=ar[i];
}
else if(sbig<ar[i]&&ar[i]!=fbig){
sbig=ar[i];
}
else if(tbig<ar[i]&&ar[i]!=fbig){
tbig=ar[i];
}
}
System.out.println("first big number is "+fbig);
System.out.println("second big number is "+sbig);
System.out.println("third big number is "+tbig);
}
}
void FindMax()
{
int lessonNum;
System.out.print("Enter your lesson numbers : ");
lessonNum = input.nextInt();
int[] numbers = new int[lessonNum];
for (int i = 0; i < numbers.length; i++)
{
System.out.print("Please enter " + (i + 1) + " number : ");
numbers[i] = input.nextInt();
}
double max = numbers[0];
for (int i = 1; i < numbers.length; i++)
{
if (numbers[i] > max)
{
max = numbers[i];
}
}
System.out.println("Maximum number is : " + max);
}
我找到的最简单的方法,支持所有Android版本
Arrays.sort(series1Numbers);
int maxSeries = Integer.parseInt(String.valueOf(series1Numbers[series1Numbers.length-1]));
不使用集合的简单方法
public void findHighestNoInArray() {
int[] a = {1,2,6,8,9};
int large = a[0];
for(int num : a) {
if(large < num) {
large = num;
}
}
System.out.println("Large number is "+large+"");
}
如果您不想使用任何Java预定义库,那么下面是
最简单的方法
public class Test {
public static void main(String[] args) {
double[] decMax = {-2.8, -8.8, 2.3, 7.9, 4.1, -1.4, 11.3, 10.4,
8.9, 8.1, 5.8, 5.9, 7.8, 4.9, 5.7, -0.9, -0.4, 7.3, 8.3, 6.5, 9.2,
3.5, 3, 1.1, 6.5, 5.1, -1.2, -5.1, 2, 5.2, 2.1};
double maxx = decMax[0];
for (int i = 0; i < decMax.length; i++) {
if (maxx < decMax[i]) {
maxx = decMax[i];
}
}
System.out.println(maxx);
}
}
import java.util.*;
class main9 //Find the smallest and 2lagest and ascending and descending order of elements in array//
{
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
System.out.println("Enter the array range");
int no=sc.nextInt();
System.out.println("Enter the array element");
int a[]=new int[no];
int i;
for(i=0;i<no;i++)
{
a[i]=sc.nextInt();
}
Arrays.sort(a);
int s=a[0];
int l=a[a.length-1];
int m=a[a.length-2];
System.out.println("Smallest no is="+s);
System.out.println("lagest 2 numbers are=");
System.out.println(l);
System.out.println(m);
System.out.println("Array in ascending:");
for(i=0;i<no;i++)
{
System.out.println(a[i]);
}
System.out.println("Array in descending:");
for(i=a.length-1;i>=0;i--)
{
System.out.println(a[i]);
}
}
}
简单的方法找到最大数量
int arr[] = {10, 11, 12, 13, 55, 18, 20};
int num = arr.length;
int max = 0;
for (int i = 0; i < num; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println(max);
如果你想从数组中找到最高值,我们有不同的方法。 我将分享一些在 array 中查找最高元素的好例子。
方法 1:使用迭代方式
在这个例子中,我们将采用一个 max 变量并将数组的第一个元素分配给它。 现在我们将迭代数组,如果任何元素大于最大最大元素,然后将其分配给最大元素,否则进入下一次迭代。
int largest = arr[0];
for(int i = 1 ; i < arr.length; i++){
if( largest < arr[i]){
largest = arr[i];
}
}
方法二:使用Java8 Streams
我们可以使用流的 max 方法获得最大的元素形式数组,如下面的代码示例
int max = Arrays.stream(arr).max().getAsInt();
方法 3:使用数组
在这个例子中,在数组的帮助下,我们首先按升序对数组进行排序,然后我们将从数组中返回最后一个元素
public static int getLargestElement(int [] arr){
Arrays.sort(arr);
return arr[arr.length-1];
}
package Loops;
import java.util.Scanner;
public class LargestNumber {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("How many numbers you want to enter?\n");
int x = sc.nextInt();
int[] data = new int[x];
for (int i = 0; i < data.length; i++) {
System.out.println("Enter the number " + (i + 1));
data[i] = sc.nextInt();
}
int max = data[0];
int min = data[0];
int i;
for (i = 1; i < data.length; i++) {
if (data[i] > max) {
max = data[i];
} else if (data[i] < min) {
min = data[i];
}
}
System.out.println("The highest number in array is: " + max);
System.out.println("The smallest number in array is: " + min);
}
}
int[] data2 = {1,10,50,70};
List<Integer> testing= new ArrayList<>();
for(int s=0;s<data.length;s++){
testing.add(data[s]);
}
int t= Collections.max(testing);
int mini= Collections.min(testing);
System.out.println("Max is:"+t);
System.out.println("Minimum is:"+mini);
function maxElement(values){
var max = values[0]; // Initialize maximum element
for (value of values){ //Traverse array elements from second and compare every element with curr`enter code here`ent max
if (value > max) {
max = value //new maximum
}
}
return max;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.