输出累积每次迭代而不是重置

时间:2013-08-15 15:00:40

标签: java string loops while-loop

代码第一次运行正常,然后使用while循环再次运行,让我们说第一次进入AA并且它变为CC然后再次运行我再次进入AA它将与CCCC一起再做它来了与CCCCCC一起,我不希望我每次循环时都不需要保留字符串中的数据。

import java.util.*;
public class SecretCypher {

    public static void main(String args[]) {

        Scanner kb = new Scanner(System.in);
        StringBuffer e = new StringBuffer();
        System.out.println("Welcome to Secret Cypher!");

            char loop = 'Y';
            while(loop == 'Y' || loop == 'y') {
                System.out.println("");
                System.out.println("Enter your cypher in upper case.");
                String s = kb.nextLine();


                char[] cs = s.toCharArray();
                for (int i = 0; i < cs.length; i++) {
                    e.append((char)('A' + (cs[i] - 'A' + 2) % 26));
                }
                if(s == s.toLowerCase()) {
                    System.out.println("Remember to use upper case letters!");
                    System.exit(0);//Also I was bored of using break and this works any where in the code.
                }
                System.out.println(e.toString());


                System.out.println("Do you want to enter another cypher? > ");
                String again = kb.nextLine();
                if(again.charAt(0) == 'N') {
                    System.out.println("Hope you come back again!");
                    break;
                }
            }
    }
}

1 个答案:

答案 0 :(得分:3)

您正在重复使用相同的字符串缓冲区。如果你把东西放在同一个缓冲区而不清除它,你显然会从之前的迭代中获得无关的东西。

只需在while循环中声明StringBuffer,以便在每次迭代时创建它。

无论如何,你应该学会使用你的调试器,而不是要求我们调试。如果有的话,使用调试器可以提供非常有价值的洞察力来解决你在这里遇到的麻烦。