Java program: Проблема с классом исключений в программе для сортировки массива по порядку - PullRequest
0 голосов
/ 25 января 2020

У меня проблема с выбросом класса исключений в эту программу. Эта программа работает хорошо и правильно сортирует по порядку. Но я также хочу добавить туда свой класс исключений в InputMissmatchexception. Я хочу выбросить исключение при установке другого значения, чем числа. Кто-нибудь может мне помочь? Код ниже:

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


public class metod1 {
    private static Scanner sc;

    public static void main(String[] args) {
        int Size, i;
        sc = new Scanner(System.in);

        System.out.print("Enter how many numbers you want to sort: ");
        Size = sc.nextInt();

        int[] a = new int[Size];

        System.out.print("Enter " + Size + " numbers which should be sorted: \n");
        for (i = 0; i < Size; i++) {
            a[i] = sc.nextInt();
        }

        Arrays.sort(a);

        System.out.println("\nAfter sorting:  ");
        for (int Number : a) {
            System.out.print(Number + "  ");
        }
    }
}

1 Ответ

0 голосов
/ 25 января 2020

Вы можете сделать это следующим образом:

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

public class Main {
    private static Scanner sc;

    public static void main(String[] args) {
        int size, i;
        sc = new Scanner(System.in);

        System.out.print("Enter how many numbers you want to sort: ");
        size = sc.nextInt();

        int[] a = new int[size];

        System.out.print("Enter " + size + " numbers which should be sorted: \n");
        for (i = 0; i < size; i++) {
            try {
                a[i] = sc.nextInt();
            } catch (InputMismatchException e) {
                System.out.println("Invalid input");
                break;
            }
        }
        if (i == size) {
            Arrays.sort(a);

            System.out.println("\nAfter sorting:  ");
            for (int number : a) {
                System.out.print(number + "  ");
            }
        }
    }
}

Образец прогона-1:

Enter how many numbers you want to sort: 3
Enter 3 numbers which should be sorted: 
10 a 30
Invalid input

Образец прогона-2:

Enter how many numbers you want to sort: 3
Enter 3 numbers which should be sorted: 
20 10 30

After sorting:  
10  20  30  

Примечания:

A. Вы всегда должны соблюдать соглашение об именах. Проверьте https://www.oracle.com/technetwork/java/codeconventions-135099.html для деталей.

B. Вы можете заменить

System.out.println("Invalid input");
break;

на

throw new InputMismatchException("Invalid input");

, но это сделает вывод уродливым, например

Enter how many numbers you want to sort: 3
Enter 3 numbers which should be sorted: 
20 a 30
Exception in thread "main" java.util.InputMismatchException: Invalid input
    at Main.main(Main.java:22)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...