Java 我编写这段代码是为了从用户填充的数字数组中查找最大和最小的数字,但它不起作用

Java 我编写这段代码是为了从用户填充的数字数组中查找最大和最小的数字,但它不起作用,java,arrays,loops,Java,Arrays,Loops,我正在为函数(最小或最大)和填充数组获取用户输入。然后根据输入函数,我想比较连续的元素,找出最小或最大的数字。我无法理解为什么以及如何修复我的代码 代码运行,但不按预期工作。最小和最大的数字都是错的 import java.util.Scanner; public class App { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Sys

我正在为函数(最小或最大)和填充数组获取用户输入。然后根据输入函数,我想比较连续的元素,找出最小或最大的数字。我无法理解为什么以及如何修复我的代码

代码运行,但不按预期工作。最小和最大的数字都是错的

import java.util.Scanner;

public class App {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.println("Are you trying to find the Smallest or Largest number in an array of numbers? S/L");
        String functionExpected = sc.nextLine();

        System.out.println("How many elements you plan to enter? ");
        int lengthOfArray = sc.nextInt();

        // Populating array according to input and length
        int[] numbersArray = new int[lengthOfArray];
        for (int i = 0; i < numbersArray.length; i++) {
            System.out.println("Enter an element here: ");
            numbersArray[i] = sc.nextInt();
        }
        // Print out array
        for (int i = 0; i < numbersArray.length; i++) {
            System.out.print(numbersArray[i] + " ");
        }
        System.out.println();

        if (functionExpected.equalsIgnoreCase("L")) {
            int temp = 0;
            System.out.println("We are going to find the largest number in the array of elements you enter!");
            for (int i = 0; i < numbersArray.length; i++) {
                for (int j = 1; j < numbersArray.length;) {
                    if (numbersArray[i] > numbersArray[j]) {
                        temp = numbersArray[i];
                        break;
                    } else {
                        temp = numbersArray[j];
                        break;
                    }
                }
            }

            System.out.println("Largest of the three numbers is : " + temp);
        }
        if (functionExpected.equalsIgnoreCase("S")) {
            int temp = 0;
            System.out.println("We are going to find the smallest number in the array of elements you enter!");
            for (int i = 0; i < numbersArray.length; i++) {
                for (int j = 1; j < numbersArray.length;) {
                    if (numbersArray[i] > numbersArray[j]) {
                        temp = numbersArray[j];
                        break;
                    } else {
                        temp = numbersArray[i];
                        break;
                    }
                }
            }
            System.out.println("Smallest of the three numbers is : " + temp);
        }
    }
}
import java.util.Scanner;
公共类应用程序{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“您是否试图在数字数组中找到最小或最大的数字?S/L”);
字符串functionExpected=sc.nextLine();
System.out.println(“您计划输入多少元素?”);
int lengthOfArray=sc.nextInt();
//根据输入和长度填充数组
int[]numbersArray=新int[lengthOfArray];
for(int i=0;inumbersaray[j]){
温度=数字阵列[i];
打破
}否则{
温度=数字阵列[j];
打破
}
}
}
System.out.println(“三个数字中最大的是:“+temp”);
}
if(预期功能。等效信号情况(“S”)){
内部温度=0;
println(“我们将在您输入的元素数组中找到最小的数字!”);
for(int i=0;inumbersaray[j]){
温度=数字阵列[j];
打破
}否则{
温度=数字阵列[i];
打破
}
}
}
System.out.println(“三个数字中最小的是:“+temp”);
}
}
}

正如注释所指出的,内部循环(基于j)是完全不必要的

int temp = numbersArray[0];
for (int i = 1; i < numbersArray.length; i++) {
    if(numbersArray[i] > temp) {
        temp = numbersArray[i]
    }
}
int-temp=numbersArray[0];
for(int i=1;i温度){
温度=数字阵列[i]
}
}

只需在if中将>切换到<即可获得最小/最大值。

解释什么不起作用欢迎使用堆栈溢出。请阅读,采取,阅读,以及。最后学习如何创建。您没有告诉我们问题出在哪里。我也建议您。提示:您需要在比较中的某个位置使用
temp
。我想将每个元素与下一个元素进行比较,我选择了嵌套循环。现在我明白它是多余的,对逻辑是有害的。已清除。@HarishSrinivasan请注意,您可以在同一循环中查找最大和最小的,然后在循环后选择要打印的。