簡體   English   中英

如何創建編碼器? 解碼器?

[英]How to create an encoder? Decoder?

一般來說,我對編程還很陌生,我想知道如何編碼/解碼輸入的文本。

所有字母都必須減少 3 個字母,例如 A -> DB -> E 等等

舉一些偽代碼為例:

輸入消息:“LORYHBRX”

編碼信息:LORYHBRX

解碼信息:ILOVEYOU

輸出信息:“我愛你”

請幫忙。

到目前為止我有

import java.util.*;

public class Encoder {

public static void main(String[] args) 
{   

    String a = "d";
    String b = "e";
    String c = "f";
    String d = "g";
    String e = "h";
    String f = "i";
    String g = "j";
    String h = "k";
    String i = "l";
    String j = "m";
    String k = "n";
    String l = "o";
    String m = "p";
    String n = "q";
    String o = "r";
    String p = "s";
    String q = "t";
    String r = "u";
    String s = "v";
    String t = "w";
    String u = "x";
    String v = "y";
    String w = "z";
    String x = "a";
    String y = "b";
    String z = "c";

    Scanner in = new Scanner(System.in);
    System.out.println("Please enter the text you wish to encode.");
    String place = in.nextLine();
    System.out.println(place);

}
}

我正在嘗試將輸入的內容轉換為上述變量。

我想我將所有這些字符串聲明為變量,但我不知道如何通過輸入使它們可變。

我會給你一些提示如何進行解碼和編碼將只是相反的過程。

首先,您應該知道計算機只能理解稱為Ascii code數字。

Ascii 代碼是字符的數字表示,如b&A等,因此大寫和小寫字母都具有 int 類型的Ascii code

在此處閱讀並查看 Ascci 表

你應該知道的另一個主題是Casting

鑄造是一種類型轉換為另一種類型的轉換一樣INT到char或反之亦然,但你應該知道一些鑄造類型不能轉換到為INT另一種類型的樣型布爾這是不可能的。

閱讀有關在 Java 中進行強制轉換的信息

讓我們談談編碼並將解碼留給您自己解決,因為它與編碼相反。

關於如何編碼的提示

  1. 不需要像String a = "a"那樣定義 String ;
  2. 由於您了解了作為數字的 Ascci 代碼,您可以通過強制轉換來循環 97 到 122 以獲得小字符。

    例子:

     System.out.println("Asci code of small a is " + (int)'a' + "\\nsmall a is " + (char)97);

    輸出:

     Asci code of small a is 97 small a is a

注意:您將 char 轉換為 int 並將 int 轉換為 char。

  1. 由於您正在處理數字,因此您可以進行加法。

    例子:

     System.out.println("Three char after a is " + (char)(97+3));

    輸出:

     there char after a is d

對於字符 x、y 和 z,您可以從它們的 asci 代碼中減去 23,例如120-23將給出 a 的 asci 代碼。

編碼和解碼的完整代碼

import java.util.Scanner;

public class coder {

    public static void main(String[] args) {
        String[] qe = {"1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 ","10 ","11 ","12 ","13 ",
            "14 ","15 ","16 ","17 ","18 ","19 ","20 ","21 ","22 ","23 ","24 ","25 ","26 "};
        String [] eq = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",
                "p","q","r","s","t","u","v","w","x","y","z"};
        Scanner in = new Scanner(System.in);
        System.out.println("Please enter the text you wish to encode.");
        String place = in.nextLine();
        place = place.toLowerCase();
        place = place.replace("a", qe[0]);
        place = place.replace("b", qe[1]);
        place = place.replace("c", qe[2]);
        place = place.replace("d", qe[3]);
        place = place.replace("e", qe[4]);
        place = place.replace("f", qe[5]);
        place = place.replace("g", qe[6]);
        place = place.replace("h", qe[7]);
        place = place.replace("i", qe[8]);
        place = place.replace("j", qe[9]);
        place = place.replace("k", qe[10]);
        place = place.replace("l", qe[11]);
        place = place.replace("m", qe[12]);
        place = place.replace("n", qe[13]);
        place = place.replace("o", qe[14]);
        place = place.replace("p", qe[15]);
        place = place.replace("q", qe[16]);
        place = place.replace("r", qe[17]);
        place = place.replace("s", qe[18]);
        place = place.replace("t", qe[19]);
        place = place.replace("u", qe[20]);
        place = place.replace("v", qe[21]);
        place = place.replace("w", qe[22]);
        place = place.replace("x", qe[23]);
        place = place.replace("y", qe[24]);
        place = place.replace("z", qe[25]);
        System.out.println(place);

        place = place.replace("26 ", eq[25]);
        place = place.replace("25 ", eq[24]);
        place = place.replace("24 ", eq[23]);
        place = place.replace("23 ", eq[22]);
        place = place.replace("22 ", eq[21]);
        place = place.replace("21 ", eq[20]);
        place = place.replace("20 ", eq[19]);
        place = place.replace("19 ", eq[18]);
        place = place.replace("18 ", eq[17]);
        place = place.replace("17 ", eq[16]);
        place = place.replace("16 ", eq[15]);
        place = place.replace("15 ", eq[14]);
        place = place.replace("14 ", eq[13]);
        place = place.replace("13 ", eq[12]);
        place = place.replace("12 ", eq[11]);
        place = place.replace("11 ", eq[10]);
        place = place.replace("10 ", eq[9]);
        place = place.replace("9 ", eq[8]);
        place = place.replace("8 ", eq[7]);
        place = place.replace("7 ", eq[6]);
        place = place.replace("6 ", eq[5]);
        place = place.replace("5 ", eq[4]);
        place = place.replace("4 ", eq[3]);
        place = place.replace("3 ", eq[2]);
        place = place.replace("2 ", eq[1]);
        place = place.replace("1 ", eq[0]);
        System.out.println(place);
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM