0

嗨,这是我第三次在这个论坛上发布这个问题,到目前为止,没有人能够就这种情况向我提供启发。

我只在此处粘贴了重要的代码,并将尽我所能解释...

方法:

  1. showMenu(in) - 显示一个菜单列表,它也调用choice(in)
  2. choice(in) - 通过 -> getNumber(in) 接受 in 输入
  3. getNumber(in) - 是返回的数字,现在选择正确的大小写

现在我只处理案例 1:和案例 2:

情况1:

  1. 字符串谱号 = 从 saisirClef(in) 分配的返回值
  2. saisirClef(in); 是完成逻辑后返回字符串的方法
  3. showMenu(in) 是必需的,所以我现在可以选择不同的案例

案例2:简单我试图在案例1完成后访问字符串;如果不是,那么我应该通过案例 1

这可以做到吗?我觉得每次通过休息时我的所有变量都消失了这是正常的吗?

我怎样才能做到这一点 ?

public static void choice(Scanner in){

    switch(getNumber(in)){
        case 1:
            String clef = saisirClef(in);
            showMenu(in);
            break;
        case 2:
            if(clef.isEmpty()){
                System.out.println("Erreur : Aucune clef n’a été saisie.");
                saisirClef(in);
            }
            else{
                afficherClef(clef);
            }
            break;
        case 3:
            chiffrerFichier();
            break;
        case 4:
            dechiffrerFichier();
            break;
        case 5:
            quitApplication();
            break;
        default:
            System.out.println("Default");
            break;
        }
    }
4

1 回答 1

1

试试这个:

private static String clef = null;

public static void choice(Scanner in){

    switch(getNumber(in)){
        case 1:
            clef = saisirClef(in);
            showMenu(in);
            break;
        case 2:
            if(clef == null || clef.isEmpty()){
                System.out.println("Erreur : Aucune clef n’a été saisie.");
                clef = saisirClef(in);
            }
            else{
                afficherClef(clef);
            }
            break;
                    // ...
    }
于 2013-05-19T00:51:03.140 回答