我使用一个名为getNumberOfMaxParam的方法,它接受三个整数,并按照方法参数的顺序返回第一个最大值的位置。
问题:我不知道如何从3个数字中找到最大位置,我不想打印最大值,我只想打印最大值的位置。
方法应该返回1、2或3。
样本输入1: 12 3 12
样本输出1: 1
代码:(输出在底部)
import java.util.Scanner;
class App {
    public static int getNumberOfMaxParam(int a, int b, int c) {
        int firstMax = Math.max(a, b);
        int highMax = Math.max(firstMax, c);
        return highMax;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        final int a = scanner.nextInt();
        final int b = scanner.nextInt();
        final int c = scanner.nextInt();
        System.out.print(getNumberOfMaxParam(a, b, c));
    }
}输入:
1
7
8
输出:
8
我不想打印8,这是最大的,但我想打印3,因为这是最大(8)的位置。
如果我把事情搞得太复杂了,谢谢你。:)
发布于 2020-07-30 08:49:03
试一试,使用数组来存储值,然后找出它的索引的最大值。
import java.util.Arrays; 
public class Main
{
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int[] nums = new int[3];
    nums[0] = scanner.nextInt();
    nums[1] = scanner.nextInt();
    nums[2] = scanner.nextInt();
    System.out.print(getNumberOfMaxParam(nums));
    }
     
  public static int getNumberOfMaxParam(int[] nums) {
    int maxValue = nums[0];
    int index = 0;
    for(int i = 1; i < nums.length; i++){
        if(nums[i] > maxValue){
            maxValue = nums[i];
            index = i;
            }
        }
    return index+1;
    
    }
}发布于 2020-07-30 08:44:58
你找到了最高的数字。现在将其与方法参数进行比较,找出其中的参数并返回其位置。
public static int getNumberOfMaxParam(int a, int b, int c) {
    int firstMax = Math.max(a, b);
    int highMax = Math.max(firstMax, c);
    if (a == highMax) {
        return 1;
    }
    else if (b == highMax) {
        return 2;
    }
    else if (c == highMax) {
        return 3;
    }
    else {
        throw new RuntimeException("Something strange here.");
    }
}发布于 2020-07-30 08:52:47
如果你有这三个值,我可能会这样做。本质上,只是比较值和跟踪索引与它。如果某物高于当前最大值,则设置新的当前最大值以及最高索引。
public static int getNumberOfMaxParam(int a, int b, int c) {
    int currentMax = a;
    int highestIndex = 1;
    if (currentMax < b) {
        currentMax = b;
        highestIndex = 2;
    }
    if (currentMax < c) {
        currentMax = c;
        highestIndex = 3;
    }
    return highestIndex;
}我将假设您正在开始学习编程,所以这可能有点多,但如下所示:
如果您想让事情更容易使用,并允许更多的参数,您可以使用以下内容:
public static int getNumberOfMaxParam(int... values) {
    if (values.length == 0) return 0;
    int highestIndex = 1;
    int currentMax = values[0];
    for (int i = 1; i < values.length; i++) {
        if (values[i] > currentMax) {
            currentMax = values[i];
            highestIndex = i + 1;
        }
    }
    return highestIndex;
}为了解释发生了什么:
int... values定义了一个可变长度的int数组(一个值列表)(这就是三个点的作用所在)。这允许您用任意多的参数调用函数。有关这方面的更多信息,请查阅"Java“。
因此,现在我们有了一个值列表,我们可以遵循一组简单的步骤来获得最高值的索引:
[0]在索引0处访问元素,这是第一个元素)如果你愿意的话,你可以在一个小小的点子上看一下这个解决方案!
https://stackoverflow.com/questions/63169297
复制相似问题