2013-03-23 2 views
1

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

В отладке, на 'return;' значение «меню» сохраняется в переменной «ответ». Уже на следующий шаг после что я получаю "Thread [главная] (Приостановлено)" и это сообщение трассировки стека:

Thread.exit() линия: нет в наличии [локальные переменные недоступны]

Как я получаю ответ, который должен быть распознан в моем классе Exec из main()?

Вот мой main():

package program2; 
public class Calculator { 
    public static String answer; 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Enter the word menu: "); 
     String answer = sc.nextLine(); 
     return; 
    } 
} 

Вот мой класс Exec, где я пытаюсь выполнить действия:

package program2; 

public class Exec { 
    String newAnswer = Calculator.answer; 

    public Exec (String answer){   
     if (newAnswer.equals("menu")){ 
      menu(); 
     } 
    } 
    public static void menu(){ 
     System.out.printf("%-30s %-30s %-30s%n", "Enter value: enter", "Duplicate: dup" "Exp:exp");   
    } 
} 

я пытался что-то более простое, как это (получил тот же ответ):

package program2; 
public class Calculator { 
    public static String answer; 

    public static void main(String[] args) { 
     answer = "menu"; 
     return; 
    } 
} 
+0

Вы не используете 'Exec' в любом месте. Чего вы ожидаете? – DaoWen

+0

Я назначаю Calculator.answer newAnswer; Я ожидаю, что newAnswer возьмет значение Calculator.answer ... – Chris

ответ

2

Для начала вам необходимо создать экземпляр Exec fr ом основном, и передать его в Exec ... т.е .:

String answer = sc.nextLine(); 
Exec ex = new Exec(answer); 
return; 

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

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

Edit:

угги .. его еще хуже, чем ... не переобъявить ответ, используйте this.answer ... вы объявляете новую локальную переменную.

+1

Спасибо. Я знаю, что это элементарно для вас и других, но я все еще пытаюсь учиться. Ваше время и помощь очень благодарны :) – Chris

+0

Не проблема Крис, все были там, я посещаю этот сайт, потому что он помогает мне учиться, помогая другим :) Не волнуйся о задании вопросов ... мой «uggh ..» . »было потому, что я продолжал редактировать и находил больше ошибок lol, было бы неплохо, если бы я сразу увидел их всех. – Ryan

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