#java
#java
Вопрос:
Я создаю программу, в которой есть меню, и я использую switch для навигации между меню.
У меня есть что-то вроде этого:
switch (pick) {
case 1:
// Here the program ask the user to input some data related with students (lets say
// name and dob). Student is a class and the students data is stored in 1 array of
// students. If I do:
// for (Student item: students){
// if (item != null){
// System.out.println(item);
// }
// }
// It will print the name and dob of all the students inserted because I've created
// a toString() method that returns the name and dob of the students
case 2:
// On case 2 at some point I will need to print the array created on the case
// above. If I do again:
// for (Student item: students){
// if (item != null){
// System.out.println(item);
// }
// }
// It says that students variable might have not been initialized.
Вопрос:
Если переменная создана в одном случае, ее значения не могут быть использованы в другом случае? То, что я пытался сделать, это сначала ввести в случае 1 и ввести значения, а затем, в случае 2, иметь возможность использовать некоторые значения, определенные в случае 1.
Если это невозможно сделать, пожалуйста, укажите мне правильное направление.
Пожалуйста, имейте в виду, что я начал изучать Java всего несколько недель.
фаволы
Комментарии:
1. Вы сказали «вопрос первый:», есть ли также «вопрос второй»?
2. @java lava Моя ошибка. Извините
Ответ №1:
Объявите переменные перед переключением, и вы сможете использовать их во всех случаях
int var1;
switch(number) {
case 1:
var1 = 2;
break;
case 2:
var2 = 3;
break;
...
Комментарии:
1. P.S. не забудьте добавить инструкции break в конце каждого случая, потому что инструкции в метках case выполняются последовательно до тех пор, пока не возникнет разрыв. смотрите download.oracle.com/javase/tutorial/java/nutsandbolts /…
2. Спасибо. Забудьте об этом и уже знаете, что нужно поставить break.
Ответ №2:
Всякий раз, когда есть фигурные скобки, у вас есть то, что известно как другая область видимости.
Если вы создаете переменные там, они теряются, когда вы покидаете эту область.
Если вы создали переменную РАНЬШЕ, вы можете ее использовать.
int subMenu = 0;
switch(...){
...
subMenu = 1;
}
if (subMenu == 1 ){
....
}
Будет работать, даже если вы оставите переключатель.
Ответ №3:
Если вы попытаетесь объявить (т. Е.: int a = 2) переменную в случае 1, а затем использовать ее также в случае 2, вы получите сообщение об ошибке: «Переменная уже определена …». Это объясняет, почему вы не можете этого сделать, компилятор должен знать, что вы объявили переменную, прежде чем использовать ее.
Если вы объявите все переменные перед оператором switch, все будет в порядке. Пример:
int var;
swith(...){
case 1:
var ;
break;
case 2:
var =10;
break;
}