2013-03-08 3 views
-1

У меня есть проблема со следующим назначением:Решение Структура для Java

Создать программу, которая предлагает пользователю ввести два значения: рейтинг фильма и его возраст. Используя структуру принятия решений, определите, разрешено ли пользователю видеть фильм в театре, исходя из введенного рейтинга и возраста. Наконец, отобразите результат этого решения пользователю.

Вот мой код, я сделал Alt + Shift + F в NetBeans, прежде чем я это:

/* 
    * To change this template, choose Tools | Templates 
    * and open the template in the editor. 
    */ 
    package age; 

    /** 
    * 
    * @author Jason 
    */ 
    import java.util.Scanner; 

    public class Age { 

     public static void main(String[] args) { 

      Scanner user_input = new Scanner(System.in); 


      String user_age; 
      System.out.print("Enter your age: "); 
      user_age = user_input.next(); 

      String mrating; 
      System.out.print("Enter the movie rating: "); 
      mrating = user_input.next(); 

     } 

    { 
     if (user_age < 13 + mrating = G);{ 
     System.out.print("You are of the right age for this movie"); 
     } 
     else{ 
     System.out.print(" You are not of correct age for this movie"); 
     } 

     if (user_age >= 13 + mrating = PG13);{ 
     System.out.print("You are of the right age for this movie"); 
     } 
     else{ 
     System.out.print(" You are not of correct age for this movie"); 
     } 

     if (user_age >= 17 + mrating = R);{ 
     System.out.print("You are of the right age for this movie"); 
     } 
     else{ 
     System.out.print(" You are not of correct age for this movie"); 
     } 

    } 
} 

Если я двигаю закрывающую скобку для века до перед if заявления начать. Я могу заставить дисплей задавать возраст и рейтинг пользователя, после чего программа заканчивается без каких-либо результатов. Если я выйду из скобки, программа полностью выйдет из строя. Я новичок в Java и настолько смущен, что я работал над этим с hrs с книгой и веб-сайтами, но я начинаю запутываться. Кроме того, user_age и mrating получают сообщение об ошибке, поскольку переменная не используется.

+0

У вас есть блок кода в вашем классе, который не ссылается на переменные, которые не были объявлены. И в этом блоке кратные ваши операторы if имеют свисающие точки с запятой - например ('if (user_age <13 + mrating = G); {'). Это ваш настоящий код? – Perception

+0

Обратите внимание, что первая закрывающая скобка имеет отступы, чтобы выровнять свой метод 'main()'. Это означает, что операторы 'if' не находятся в этом методе. Удалите эту скобу и следующую открытую скобу и снова нажмите Alt-Ctrl-F. –

+0

@Perception Нет проблем с «* not * ссылкой на переменные, которые * не были объявлены». –

ответ

-1

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

Я решил все сборникам ошибки ... много синтаксического вопрос .. пожалуйста, пройдите через java-книгу для начинающих.

ниже получите вы начали ...

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package age; 

/** 
* 
* @author Jason 
*/ 
import java.util.Scanner; 

public class Age 
{ 

    public static void main(String[] args) 
    { 

     Scanner user_input = new Scanner(System.in); 

     System.out.print("Enter your age: "); 
     int user_age = Integer.parseInt(user_input.next()); 

     String mrating; 
     System.out.print("Enter the movie rating: "); 
     mrating = user_input.next(); 

     if (user_age < 13 && mrating == "G") 
     { 
      System.out.print("You are of the right age for this movie"); 
     } 
     else 
     { 
      System.out.print(" You are not of correct age for this movie"); 
     } 

     if (user_age >= 13 && mrating == "PG13") 
     { 
      System.out.print("You are of the right age for this movie"); 
     } 
     else 
     { 
      System.out.print(" You are not of correct age for this movie"); 
     } 

     if (user_age >= 17 && mrating == "R") 
     { 
      System.out.print("You are of the right age for this movie"); 
     } 
     else 
     { 
      System.out.print(" You are not of correct age for this movie"); 
     } 

    } 
} 
+1

Объяснение того, что может сделать OP, гораздо более ценно, чем просто отправлять код без объяснение, особенно когда он не понимает, что происходит. – adchilds

+0

Я согласен с тобой @adchilds ... только, что было слишком много синтаксических ошибок .. слишком много усилий, указывая на слова .... возможно, он поймет некоторых, а не некоторых ... так наилучшим образом, дать синтаксически правильный код, чтобы он мог сравнивать и знать, что было не так ... – Amit

1

Во-первых, вы не можете сравнить String (например user_age) в целое число. Используйте Integer.parseInt(String) для преобразования в int перед сопоставлением с другим целым числом.

Во-вторых, вы не должны использовать == для сравнения двух строковых значений. Используйте метод equals для сравнения двух строковых значений.

В-третьих, используйте оператор boolean && для представления «и» в ваших условиях, а не +.

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

Возможны другие ошибки; это первые 4, которые я нашел.

0

Вам необходимо убедиться, что весь ваш код находится внутри метода main(). Это одна из причин использования Alt-Ctrl-F для форматирования вашего кода. Если вы проверите скобки в своем коде, вы увидите, что main() заканчивается перед операциями if. Вы можете исправить это, удалив закрывающие и открывающие фигурные скобки непосредственно перед вашими заявлениями if.

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

Смежные вопросы