2014-01-11 4 views
1

Имея некоторые проблемы с прицелом. Я пытаюсь написать программу, используя цикл, который принимает 10 значений, представляющих оценки экзамена (от 0 до 100) с клавиатуры, и выводит минимальное значение, максимальное значение и среднее значение всех введенных значений. Моя программа не может принимать значения меньше 0 или больше 100.Как я могу исправить эту простую ошибку определения области видимости?

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

public class ExamBookClient 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 

     int MAX = 100; 
     int MIN = 0; 
     int[] grades = new int[10]; 


     System.out.println("Please enter the grades into the gradebook."); 
     if(scan.hasNextInt()) 
     { 
     for (int i = 0; i < grades.length; i++) 
      { 
      if(x>MIN && x<MAX) 
      { 
      int x = scan.nextInt(); 
      grades[i] = x; 
      } 
     } 
    } 
     System.out.print("The grades are " + grades.length); 
    } 
} 

Моя ошибка компилятора в том, что я не могу исправить ошибку рамочный:

ExamBookClient.java:21: error: cannot find symbol 
      if(x>MIN && x<MAX) 
       ^
    symbol: variable x 
    location: class ExamBookClient 
ExamBookClient.java:21: error: cannot find symbol 
      if(x>MIN && x<MAX) 
         ^
+1

Не используйте x перед его использованием. Объявите это раньше. –

ответ

2

Чтобы устранить проблему рамочной, переместить объявление/инициализацию x до точки перед первым использованием:

int x = scan.nextInt(); 
if(x>MIN && x<MAX) { 
    grades[i] = x; 
} 

Есть несколько проблем с кодом:

  • if(scan.hasNextInt()) будет выполняться только до первого чтения int; Вы должны изменить свой код для проверки следующего междунар на каждой итерации цикла
  • Вам необходимо добавить переменные для текущего min, max, и total
  • Вам не нужно хранить значения в массиве, так как трех скаляров достаточно, чтобы вычислить все три выхода, необходимые для вашей программы.
1

Move х на верхней части, если.

if(scan.hasNextInt()) 
    { 
    for (int i = 0; i < grades.length; i++) 
     { 
     int x = scan.nextInt(); 
     if(x>MIN && x<MAX) 
     { 

     grades[i] = x; 
     } 
    } 
+0

Сфера охвата решена. спасибо – PatGreens

1

Вы указали x внутри статьи if. Поэтому, когда ваша программа достигает if, x не будет определен. Попробуйте следующее:

int x = scan.nextInt(); // OUTSIDE THE IF 
if(x > MIN && x < MAX) 
{   
    grades[i] = x; 
} 
Смежные вопросы