【发布时间】:2013-05-18 03:45:25
【问题描述】:
由于某种原因,我无法访问 switch 语句中的变量,
我不能使用任何全局变量。
import java.util.Scanner;
public class Projet {
public static void main(String[] args) {
String clef="vide";
Scanner in = new Scanner(System.in);
showMenu(in);
in.close();
}
Main 方法尽可能保持干净...只调用一次菜单。
public static void showMenu(Scanner in){
System.out.printf("******************************************%n" +
"* Choisissez une des options suivantes : *%n" +
"* 1) Saisir la clef secrète *%n" +
"* 2) Afficher la clef secrète *%n" +
"*******************************************%n%n%n");
choice(in);
}
showMenu(in) 根据所做的选择,我们将进入特定案例。
public static int getNumber(Scanner in){
int choice = in.nextInt();
in.nextLine();
return choice;
}
getNumber(in) 返回我们之前的输入,以便我们进入案例。双重功能,将在下一个版本中删除。
public static void choice(Scanner in){
try {
switch(getNumber(in)){
案例 1 ->
我们假设保留saisirClef(in)返回的谱号变量
case 1:
String clef = saisirClef(in);
break;
案例 2 -> 它应该保留案例 1 中的值?
case 2:
afficherClef();
break;
default:
System.out.println("Default");
break;
}
} catch (Exception e) {
System.out.println("Please enter a number");
//choice(in);
}
}
saisirClef(in) 在案例一中调用的方法。
public static String saisirClef(Scanner in){
System.out.println("Saisir la clef secrète :");
String a = in.nextLine();
System.out.println("Voici ce que vous avez tapper : "+a);
return a;
}
afficherClef 案例 2 中调用的方法
public static String afficherClef() {
return clef;
}
}
每次showMenu(in) 我的变量都会被清除。
我应该能够在不同的情况下传输谱号变量......
你能帮我弄清楚我在这里做错了什么吗? 我正在使用 return 语句,我只是不明白它们为什么会消失。
【问题讨论】:
-
我要重新编辑,结果不是很清楚
-
你已经多次声明了标志变量,所以为什么不声明一个标志全局变量来访问所有变量......看起来有点混乱......
-
不允许在这个练习中使用任何全局变量
标签: java arguments switch-statement return-value scope