я написал этот код, чтобы найти наибольшее и наименьшее число из массива чисел, заполненного пользователем, но он не работает - PullRequest
0 голосов
/ 12 сентября 2018

Я получаю пользовательский ввод для функции (наименьший или наибольший) и для заполнения массива.Затем в соответствии с функцией ввода я хочу сравнить последовательные элементы и найти наименьшее или наибольшее число.Я не могу понять, почему и как исправить мой код.

Код работает, но работает не так, как предполагалось.Самые маленькие и самые большие числа ошибочны

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);
        }
    }
}

1 Ответ

0 голосов
/ 12 сентября 2018

Как отмечено в комментариях, внутренние циклы (на основе j) совершенно не нужны.

int temp = numbersArray[0];
for (int i = 1; i < numbersArray.length; i++) {
    if(numbersArray[i] > temp) {
        temp = numbersArray[i]
    }
}

Просто переключите> на <в if для наименьшего / наибольшего. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...