【问题标题】:encoding and decoding program using scheme(java)使用方案的编码和解码程序(java)
【发布时间】:2020-02-09 21:08:47
【问题描述】:

程序应该提示用户选择是对消息进行编码还是解码,然后提示用户输入消息。空格用于分隔消息中的每个单词,句点 (.) 用于表示句子的结尾。必须使用单独的方法对输入消息进行编码和解码。

方案:A -> Z, B -> Y, C -> X, .... X -> C, Y -> B, Z -> A

我认为除了编码和解码方法的逻辑之外一切都很好。

    import java.util.Scanner;

    public class Project1
    {
        public static void main(  String [] args )
        {
            Scanner input = new Scanner(System.in);

            System.out.println(" ");
            System.out.print( "Press 1 for Encoding, 2 for Decoding: " );
            int x = input.nextInt();
            String temp = input.nextLine();

            System.out.println(" ");
            System.out.print( "Enter message: ");
            String message = input.nextLine();
            System.out.println(" ");



            if ( x == 1)
            {

                encodeMessage( message );
            }

            else if ( x == 2 )
            {   

                decodeMessage( message );
            }

            else
                System.out.print("Invalid response");

        }


        public static void encodeMessage(String message)
        { 
            for (int i = 0; i < message.length(); i++)
            {
                char x = message.charAt(i);
                System.out.print((char)(27 - x));

             }
        }


        public static void decodeMessage (String message)
        {
            for (int i = 0; i < message.length(); i++)
            {
                char x = message.charAt(i);
                System.out.print((char)(27 - x));

            }
        }


    }

当我输入消息时,它会显示问号。

【问题讨论】:

  • 例如,您如何得出“27 - x”会将“A”转换为“Z”的结论?
  • 试过调试器?
  • 我看到了一个使用 (char)(x + 1) 的示例,它在 x 之后显示了字母。我假设代码在考虑 a = 1,b = 2,c =3... 等等。所以如果字母是 a(即 1),我可以只做 27 - 1,这将显示 z。如果这听起来很愚蠢,我是一个初学者,很抱歉。

标签: java string encoding decoding


【解决方案1】:

你确定(char)(27 - x) 的字符是可能的吗?因为否则它将显示为问号或其他一些符号,具体取决于字符集。

例如下面的代码:

System.out.println((char)1);

打印出这个符号:

【讨论】:

  • 27 - 'A'(例如)是 -38,作为 16 位无符号(即 char)值是 0xffda,或 HALFWIDTH HANGUL LETTER EU,我想 OP 没有有他选择的字体。
  • 它显示问号。有没有可以代替 27 - x 的代码?
猜你喜欢
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多