0

我正在尝试创建一个文字游戏,它可以加密一个单词并通过用户输入的内容将字符移动一定数量,解密该加密,并检查该单词是否是回文。问题是我不知道如何保持输入继续进行,所以在我加密或检查它是否是回文后,程序结束,所以我无法解密已加密的内容。

例如-如果用户输入单词“hello”并选择加密该单词,则使用密钥 3 它应该显示“khoor”。然后我希望能够通过将“khoor”解密回“hello”来继续,但程序结束。

此外,当用户输入键号时,字符会比输入的数字多移动 7 个字符。

import java.util.Scanner;

public class WordPlayTester{

public static void main(String [] args){

String word, reverse="";
String original;
int key= 0;
String Menu= "1-Encrypt \n2-Decrypt \n3-Is Palindrome \n0-Quit \n-Select an option-";

Scanner in = new Scanner(System.in);
System.out.println("-Type any word-");
      String toUpperCase;
      word = in.nextLine();
System.out.println(Menu);

   int choice=in.nextInt();
   if(choice==1)
   {
  System.out.println("Insert a Key number");
   int select= in.nextInt();


      for (int i=0; i < word.length(); i++) {
         char c = word.charAt(i);
         if (c >= 'A' && c <= 'z') {
            c = (char)(c - 65);
            int n = c+select;
            n = n % 26;
            if (n < 0) {
               n = n + 26;
            }
            c = (char)(n + 65);
         }
         System.out.print(c);
      }
      }
      else if(choice==2)
   {
  System.out.println("Insert a Key number");
   int select2= in.nextInt();


      for (int i=0; i < word.length(); i++) {
         char c = word.charAt(i);
         if (c >= 'A' && c <= 'z') {
            c = (char)(c - 65);
            int n = c+select2;
            n = n % 26;
            if (n < 0) {
               n = n - 26;
            }
            c = (char)(n - 65);
         }
         System.out.print(c);

      }
      if(key==0)
      {
      System.out.println("Word has not been encrypted yet.");
      }

}



   else if(choice==3)
   {
   int length = word.length();
      for ( int i = length - 1 ; i >= 0 ; i-- )
         reverse = reverse + word.charAt(i);
      if (word.equals(reverse))
         System.out.println("Your word is a palindrome.");
      else
         System.out.println("Your word is not a palindrome.");


      }
      else if(choice==0)
      {
      System.exit(0);
      }

     else 
      {
      System.out.println(Menu);
      }

   }
}

谢谢

4

2 回答 2

1

将您的逻辑放在从第一个输入开始的 do-while 循环中。然后最后使用一个变量来决定何时退出。

String isExit = "N";
do{
    System.out.println("-Type any word-");
    String toUpperCase;
    word = in.nextLine();
    System.out.println(Menu);
.
.
.
.
System.out.println("-Exit? Y/N-");
    isExit = in.nextLine();

}while(!isExit.equals("Y"))
于 2013-10-23T03:51:44.800 回答
0

有一个 do-while 循环

do{
   //your logic
}while(choice!=0);
于 2013-10-23T04:00:53.333 回答