#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:
В идеале метод должен отвечать за одну задачу. В вашем случае вам следует подумать о разных вещах, которые пытается выполнить ваш код, и организовать их в том смысле, что каждый из вызываемых вами методов выполняет одну вещь из списка вещей, которые вы пытаетесь сделать. В качестве примера: насколько я понимаю, ваш код выполняет следующие действия:
- Прочитайте массив из 10 значений
- Прочитайте нечетное число
- Убедитесь, что число нечетное
- Убедитесь, что число находится в диапазоне
- Вычислите, является ли число фактором одного из 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
}
Пожалуйста, обратите внимание, что это всего лишь один из способов разбить ваш код на методы, и есть несколько способов разработать и реализовать каждый из этих методов.