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

Я очень новичок в программировании, поэтому, пожалуйста, прости меня, если это звучит невежественно. Я запустил эту программу, которая вычисляла наименьшее и наибольшее число на основе предварительно установленных чисел, которые я поместил в свой массив. После создания программы с ее запуском я понял, что мне нужен пользователь для ввода чисел. Я пытаюсь получить тот же результат. Я добавил некоторый код, чтобы я мог получить пользовательский ввод для чисел, однако он не работает с остальным кодом. Есть ли способ заставить его распознавать вводимые пользователем данные с уже выполненными вычислениями, или мне нужно начинать с нуля? Я надеюсь, что это имеет смысл.

package smallestlargestnumber;

import java.util.Arrays;
import java.util.Scanner;

/**
 *
 * @author robert.huckestein
 */
public class SmallestLargestNumber {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int[] numbers;
        Scanner sc = new Scanner (System.in);
        numbers = new int[9];
        System.out.println("Enter 10 different numbers.");
        for (int j = 0; j <= 9; j++) {
            numbers[j] = sc.nextInt();
            int  largest = numbers[0];
            int  smallest = numbers[0];
            for(int i = 1; i<numbers.length; i++){
                if (numbers[i] > largest){
                largest = numbers[i];
                }
                else if(numbers[i] < smallest){
                    smallest = numbers[i];
                }
            }
            System.out.println("  The numbers given are" +Arrays.toString(numbers));
            System.out.println(" Largest number is " + largest);
            System.out.println(" Smallest number is " + smallest);
        }
    }
}

// Вот скомпилированная программа моего кода.

run:
Enter 10 different numbers.
1
2
3
4
5
6
7
8
9
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
    at smallestlargestnumber.SmallestLargestNumber.main(SmallestLargestNumber.java:31)
C:\Users\robert.huckestein\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 17 seconds)

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Как я вижу, проблема заключалась в том, что вы не прочитали ввод пользователя не полностью и начали выполнять математику.

Я обновил программу для вас. Он получает все 10 номеров от пользователя и только после этого производит расчеты.

public static void main(String[] args) {
    int[] numbers;
    Scanner sc = new Scanner(System.in);
    {
        numbers = new int[10];
        System.out.println("Enter 10 different numbers.");

        // read user's input for all 10 numbers
        for (int j = 0; j <= 9; j++) {
            numbers[j] = sc.nextInt();
        }

        // do the calculations
        int largest = numbers[0];
        int smallest = numbers[0];
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i] > largest) {
                largest = numbers[i];
            } else if (numbers[i] < smallest) {
                smallest = numbers[i];
            }
        }
        System.out.println("  The numbers given are" + Arrays.toString(numbers));
        System.out.println(" Largest number is " + largest);
        System.out.println(" Smallest number is " + smallest);
    }
} 
0 голосов
/ 02 ноября 2018
numbers = new int[9];

Это неправильно, вам нужно хранить 10 int, поэтому оно должно new int[10]

Измените его, и ваш код должен работать

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