У меня проблема с разделением моей Java-программы на отдельные методы в пределах одного класса, могу ли я получить несколько советов о том, как это сделать?

#java #arrays #checkbox #methods #bluej

#java #массивы #флажок #методы #bluej

Вопрос:

Мне была поставлена задача разделить мою программу, которая позволяет пользователю вводить массив чисел и после нечетного числа от 1 до 10 проверять, является ли нечетное число фактором каждого из 5 чисел в массиве. Я продолжаю пробовать разные способы, но, похоже, ни один из них не работает. Может ли кто-нибудь помочь мне или прислать образец того, как я должен это отсортировать? Это программа:

 import java.util.Scanner;
public class CheckboxExample{  
    public static void main(String args[])  {  
        CheckBox c = new CheckBox();
        new CheckboxExample();  // links to checkbox class
        Scanner s = new Scanner(System.in);
        int array[] = new int[10]; 
        System.out.println ("Please enter 10 random numbers"); // prompts the user to enter 10 numbers
        int num; // declares variable num
        try{
            for (int i = 0; i < 10; i  ) {
                array[i] = s.nextInt(); // array declaration
            }
        }catch (Exception e){
            System.out.println ("You have an error");
        }

        System.out.println ("Please enter an odd number between 1 and 10");

        try{
            num = s.nextInt ();
            if (num % 2 == 0){
                do{
                    System.out.println ("nYour number is even, enter an odd one");
                    num = s.nextInt ();
                }while (num % 2 == 0);
            } 

            if (num < 0 | num > 10){
                do{  
                    System.out.println ("Your number is outside of the range, try again");
                    num = s.nextInt ();  
                }while (num < 0 | num > 10);
            } 

            for (int i = 0; i < 5 ; i  ){
                if (array[i] % num  == 0) {
                    System.out.println("Your number is a factor of "   array[i] );
                } 
            }
        }catch (Exception e){
            System.out.println ("error");
        }
    }  
}  
 

Комментарии:

1. Имя метода Java должно быть комбинацией глагола и существительного. Некоторые примеры, глядя на ваш код, будут readNumbers, readOddNumber, checkIfFactor .

Ответ №1:

В идеале метод должен отвечать за одну задачу. В вашем случае вам следует подумать о разных вещах, которые пытается выполнить ваш код, и организовать их в том смысле, что каждый из вызываемых вами методов выполняет одну вещь из списка вещей, которые вы пытаетесь сделать. В качестве примера: насколько я понимаю, ваш код выполняет следующие действия:

  1. Прочитайте массив из 10 значений
  2. Прочитайте нечетное число
  3. Убедитесь, что число нечетное
  4. Убедитесь, что число находится в диапазоне
  5. Вычислите, является ли число фактором одного из 10 чисел в массиве

Теперь одним из возможных подходов было бы разделить ваш код на 5 методов, которые выполняют именно эти действия.

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

Общий выброс для вашего кода может выглядеть так:

 public class CheckboxExample {  
    public static void main(String args[])  {
        CheckBox c = new CheckBox();
        new CheckboxExample();  // links to checkbox class
        Scanner s = new Scanner(System.in);
        int array[] = readInputArray();
        int number = readOddValue();
        calculateFactors(array, number);
    }

    private int[] readInputArray() {...}

    private int readOddValue() {...}

    private void calculateFactors(int[] array, int number) {...}
    
    //additional methods used by readOddValue which verify if the value is actually odd

}
 

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