Java-программа. Как мне с помощью моего массива выполнить цикл "isLucky"? Кроме того, как правильно напечатать результаты в основном методе?

Во-первых, моя программа не компилируется. Есть идеи? Я понятия не имею, почему и моя программа Eclipse не работает...

Кроме того, как мне получить метод "isLucky" для прокрутки моего массива? И правильно ли я напечатал свои результаты в основном методе?

import java.util.Scanner;

public class FunArrays {

 public static void main(String[] args) {

 luckyNumber1 = 7;
 luckyNumber2 = 13;
 luckyNumber3 = 18;


 int[] a=new int[10];
 Scanner sc=new Scanner(System.in);
 System.out.println("Please enter numbers...");
 for(int j = 0; j < a.length; j++)
 a[j] = sc.nextInt();

 boolean b = isLucky(a);

 int result; 

 if(b)
 result = sum(a);
 System.out.println(sum(a))
 else
 result = sumOfEvens(a);
 System.out.println(sumOfEvens(a))
 }

 public static int sum(int [ ] value) 
 {
 int i, total = 0;
 for(i=0; i<10; i++)
 {
 total = total + value[ i ];
 }

 return (total);
 }
 static int sumOfEvens(int array[]) 
 {
 int sum = 0;
 for(int i = 0; i < array.length; i++) {
 if(array[i] % 2 == 0)
 sum += array[i];
 }
 return sum;
 }
 public static boolean isLucky (int[] array) 
 {

 if ( array[i] == 7 || array[i] == 13 || array[i] == 18 )
 return true; 

 else
 return false;
 }

 // write the static methods isLucky, sum, and sumOfEvens

}
2 ответа

Ошибка компилятора 'else' without 'if', потому что у вас есть что-то вроде этого:

if(isOkay)
 doSomething();
 andThenDoSomethingElse();
else
 doAnotherThing();
 andEvenSomethingElse();

И вы должны поместить каждый блок в фигурные скобки, например:

if(isOkay) {
 doSomething();
 andThenDoSomethingElse();
} else {
 doAnotherThing();
 andEvenSomethingElse();
}

Я настоятельно рекомендую использовать фигурные скобки во всех ifwhiles и for и все остальное), даже если имеется только один оператор.

Более подробную информацию можно найти по этому вопросу: Else without if


Честно говоря, нет никаких правил, в которых говорится, что мы должны использовать кодовые блоки. Синтаксис обычно говорит, что после того, как мы прочитаем, если мы ищем только один оператор, если ваше условие содержит несколько операторов, тогда нам нужно заблокировать этот код, еще одна вещь - попытаться сохранить этот отступ, когда вы вводите условия методов, а затем заявления. Я люблю писать простой маршрут, чтобы получить желаемый результат. Подумайте об этом, почему вы отправляете эти методы массивов? То, что останавливает вас от простого цикла в вашем основном методе и передачи каждой итерации этим методам, тоже повезло, даже... Ваши переменные обычно должны быть инициализированы сверху или в начале метода, чтобы иметь те, которые были связаны со временем выполнения методов.Below явно не компилирует готовый код, однако это поможет вам в правильном месте, чтобы понять эту проблему больше, чем использовать скобки.

boolean isLucky;
int[] IntegerArray;
Scanner scan;
//Final for constant values Typically these would be in all uppercase to indicate to
//other that this is a final anywhere 
//in this class those will stick out.
final int luckyOne = 7;
final int luckyTwo = 13;
final int luckyThree = 18;

for(int i=0;i

licensed under cc by-sa 3.0 with attribution.