java—如果数组中的每个元素都相等,则打印一个元素;如果所有元素都不相等,则打印最大的元素

7qhs6swi  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(417)

我编写了一个代码来输出一个序列的最大值,如果用户给出了数字。如果用户只输入相等的值,则相同的输出将重复用户给定的输入数。
这里的问题是,即使我写了一个if条件来避免相同输出的重复,但是它不起作用。我真的很感激你的帮助。
问题:

int y = 0;
        for(int i : a){
            int v = 0;
            if(i == a.get(0)){
                y = y + 1;
            }
            for(int o : a){
                if(i >= o){
                    v = v + 1;
                }
            }
            if(y == a.size()){
                System.out.println("Largest_num = "+a.get(0));
            }
            else if((v == a.size())&&(y != a.size())){
                System.out.println("Largest_num = "+i);
            }

完整代码:

import java.util.Scanner;
import java.util.ArrayList;
class Noice{
    public static void main(String args[]){
        Scanner obj = new Scanner(System.in);
        System.out.println();
        ArrayList<Integer>a = new ArrayList<Integer>();
        System.out.print("Enter length: ");
        int d = obj.nextInt();
        System.out.println();
        for(int i = 0; i < d; i++){
            int c = i + 1;
            System.out.print("Num"+c+" = ");
            int b = obj.nextInt();
            a.add(b);
        }
        int y = 0;
        for(int i : a){
            int v = 0;
            if(i == a.get(0)){
                y = y + 1;
            }
            for(int o : a){
                if(i >= o){
                    v = v + 1;
                }
            }
            if(y == a.size()){
                System.out.println("Largest_num = "+a.get(0));
            }
            else if((v == a.size())&&(y != a.size())){
                System.out.println("Largest_num = "+i);
            }
        }

    }
}
7gcisfzg

7gcisfzg1#

我很难理解每个变量都在做什么,使用变量名来解释它的用途是一种很好的做法。
据我所知, y 跟踪有多少个值等于数组中的第一个值。第一个if条件检查相同值的数目( y )与数组的大小相同。如果是这样的话,你就不需要 else if ,只是一个 else 如果我正确理解这个问题,就足够了。
我也在努力理解循环是什么 for(int o : a) 和变量 v 你在做什么。同样,由于变量名没有描述它们的功能,所以很难理解,但似乎可以放弃嵌套循环,只跟踪正在运行的最大变量。之前 for(int i : a) ,可以添加如下内容 int max = a.get(0); . 那么,在你的 for 循环,如果你遇到一个大于 max ,你更新了吗 max 有这个价值。不过,这样做完全不需要任何条件,您只需输出 max 在节目的最后。

相关问题