0

我有一个程序,据说

  1. 提示用户输入单词、短语或句子。
  2. 然后我应该“加密”你输入的内容 13 次,每次都打印。最后打印的内容应与用户输入相匹配。
  3. 我只能加密字母字符。其他任何事情都保持不变。
  4. 通过查找每个字符的 ASCII 值然后将其增加 2 来“加密”。如果字母改变大小写,使其从小写的 a 或大写的 A 重新开始。

我的代码现在只给了我 1 个加密并在 2 处停止。它也只适用于第一个字母。我的班级还没有学习数组,但如果我们愿意,我们可以试试。

import java.util.Scanner;
public class Encrypt{

    Scanner keyboard = new Scanner(System.in);
    String message = new String();
    String g = new String();
    char y;
    public void input(){
        System.out.printf("Welcome to Encrypt.java. Please enter a word,phrase, or sentence. \n");
        System.out.println();
        System.out.print("->    ");
        message = keyboard.nextLine();
    }
    public void code(){
        int x = message.length()-1;
        boolean enter = true;

        for(int i = 0; i <= x; i++){
            int j = message.charAt(i);
            if((j >= 32 && j <=64) ||
               (j >= 91 && j <=96) ||
               (j >= 123 && j <= 127)){ 
            }

            else if((j >= 65 && j <= 90)){
                j = j + 2;
                if(j>90){
                    j = (j-90)+64;
                }
            }
            else if(j>=97 && j <= 122){
                j = j + 2;
                if(j>122){
                    j = (j-122) + 96;
                }
            }

            if(enter == true){
                System.out.println();
                System.out.print("  ");
                enter = false;
            }
            y = (char)(j);
            g = g + y;
            message = g;

            x = message.length()-1;             
        }
        System.out.print(g);
        System.out.println();
    }

    public void print(){
        for(int i = 1; i <= 13; i ++){
            System.out.println("Encryption " + i + ":");
            this.code();
        }

    }
    public static void main(String [] args){
        Encrypt e = new Encrypt();
        e.input();
        e.print();

    }
}
4

2 回答 2

2

两件事情 :

  • 每次迭代后重置变量 g。
  • 正确放置消息。

 public void code() {
    int x = message.length() - 1;
    boolean enter = true;
    g = "";
    for (int i = 0; i <= x; i++) {
        int j = message.charAt(i);
            if ((j >= 32 && j <= 64) || (j >= 91 && j <= 96)
        || (j >= 123 && j <= 127)) {
            }

        else if ((j >= 65 && j <= 90)) {
            j = j + 2;
            if (j > 90) {
                j = (j - 90) + 64;
                }
        } else if (j >= 97 && j <= 122) {
            j = j + 2;
            if (j > 122) {
                j = (j - 122) + 96;
            }
        }
        if(enter == true){
            System.out.println();
            System.out.print("  ");
            enter = false;
        }
        y = (char) (j);
        g = g + y;
    }
    message = g;
}

输出:

Welcome to Encrypt.java. Please enter a word,phrase, or sentence. 

->    abba
Encrypt.code() message >> abba
Encrypt.code() message >> cddc
Encrypt.code() message >> effe
Encrypt.code() message >> ghhg
Encrypt.code() message >> ijji
Encrypt.code() message >> kllk
Encrypt.code() message >> mnnm
Encrypt.code() message >> oppo
Encrypt.code() message >> qrrq
Encrypt.code() message >> stts
Encrypt.code() message >> uvvu
Encrypt.code() message >> wxxw
Encrypt.code() message >> yzzy
于 2013-10-30T03:07:54.100 回答
0

这是你的问题

y = (char) (j);
g = g + y;
message = g;

在第一次运行中,g只有一个字符,而您正在制作message = g;. 这使得message只有一个字符g。我运行它删除它message = g,它工作正常。我不知道这是否是您想要的输出,但至少它已经过去了Encryption 1

注意:您应该真正学习如何使用调试器。这就是我发现问题的方式。

于 2013-10-30T01:41:08.847 回答