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

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は、 は 1 文字のみであり、あなたはmessage = g;. これによりmessage、その 1 文字だけが作成されgます。を削除して実行しましたが、message = g正常に動作します。それがあなたの望む出力かどうかはわかりませんが、少なくともそれは過ぎ去っていますEncryption 1

注: デバッガーの使用方法を実際に学習する必要があります。それが私が問題を見つけた方法です。

于 2013-10-30T01:41:08.847 に答える