我在这里加密错误是什么?

时间:2013-10-22 20:14:17

标签: java encryption character

所以我有一个wordplay项目要做,我必须加密一些角色。我正处于被卡住的地步,当我运行它并输入1加密时,它不会移动那么多字母。它只是重新打印工作。我想知道我能做些什么来解决它,如果我说“你好”它将打印1个字符并说“ifmmp”谢谢!

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-");
          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 - 64);
                int n = c+1;
                n = n % 26;
                if (n < 0) {
                   n = n + 26;
                }
                c = (char)(n + 65);
             }
             System.out.println(c);
          }
          }


       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);
          }


  }
}

1 个答案:

答案 0 :(得分:0)

以下是一些经过修改的简化代码:

import java.util.Scanner;

public class WordPlayTester {

  public static void main(String [] args) {

    String word;
    int key= 0;

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

    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 - (int)'A');
        int n = c+select;
        n = n % 26;
        if (n < 0) {
          n = n + 26;
        }
        c = (char)(n + (int)'A');
      }
      System.out.print(c);
    }
    System.out.print('\n');
  }
}

给定输入BYZANTIUM和键1,它输出CZABOUJVN;给定键2,输出DABCPVKWO;给定键25,输出AXYZMSHTL;给定键26,它输出BYZANTIUM。