Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';我不能让我的密码实验室工作_Java - Fatal编程技术网

Java Can';我不能让我的密码实验室工作

Java Can';我不能让我的密码实验室工作,java,Java,我需要chiper实验室的帮助。我的说明如下: 编写一个接受任意数量字符串作为命令行的程序 参数,并显示使用Atbash密码加密的字符串。 您的程序应该尽可能模块化,并使用良好的对象 面向对象编程技术。你的计划必须彻底地完成 使用javadoc注释记录 我有String alphabet=“abcdefghijklmnopqrstuvxyz”应该对字符串进行编码,这样A将返回Z,B将返回Y,依此类推。我在Eclipse中做了密码实验室,但它没有运行。我不确定我做错了什么 public class

我需要chiper实验室的帮助。我的说明如下:

编写一个接受任意数量字符串作为命令行的程序 参数,并显示使用Atbash密码加密的字符串。 您的程序应该尽可能模块化,并使用良好的对象 面向对象编程技术。你的计划必须彻底地完成 使用javadoc注释记录

我有
String alphabet=“abcdefghijklmnopqrstuvxyz”
应该对字符串进行编码,这样A将返回Z,B将返回Y,依此类推。我在Eclipse中做了密码实验室,但它没有运行。我不确定我做错了什么

public class CaesarCipher {
  public static void main(String[] args) {
    CaesarCipher cc = new CaesarCipher();
  }

  public static final int ALPHASIZE = 26;
  public static final char [] alpha = {'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'};
  protected char[] encrypt = new char[ALPHASIZE];
  protected char[] decrypt = new char[ALPHASIZE];

  public CaesarCipher() {
    for (int i=0; i<ALPHASIZE; i++)
      encrypt[i] = alpha[(i + 3) % ALPHASIZE];
    for (int i=0; i<ALPHASIZE; i++)
      decrypt[encrypt[i] - 'A'] = alpha[i];
  }

  /** Encryption Method */
  public String encrypt(String secret) {
    char[] mess = secret.toCharArray();
    for (int i=0; i<mess.length; i++)
      if (Character.isUpperCase(mess[i]))
        mess[i] = encrypt[mess[i] - 'A'];
    return new String(mess);
  }

  /** Decryption Method */
  public String decrypt(String secret) {
    char[] mess = secret.toCharArray();
    for (int i=0; i<mess.length; i++)
      if (Character.isUpperCase(mess[i]))
        mess[i] = decrypt[mess[i] - 'A'];
    return new String(mess);
  }  
 }
公共类密码{
公共静态void main(字符串[]args){
CaesarCipher cc=新的CaesarCipher();
}
公共静态最终int ALPHASIZE=26;
公共静态最终字符[]alpha={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';
受保护字符[]加密=新字符[字母大小];
受保护字符[]解密=新字符[字母大小];
公共密码(){
对于(int i=0;i请尝试以下方法:

public class CaesarCipher {

    private static final int A = (int)'A';
    private static final int Z = (int)'Z';

    public static void main(String[] args) {
        for (String s : args)
            System.out.println(new Encoder(s));
    }

    private static class Encoder {
        private String encoded;
        public Encoder(String s) {
            s = s.toUpperCase();
            StringBuilder sb = new StringBuilder();
            for (char c : s.toCharArray())
                sb.append((char)(A + Z - (int)c));
            encoded = sb.toString();
        }

        @Override
        public String toString() { return encoded; }
    }

}

你的
main
方法所做的就是调用你的主方法所在的类的构造函数

这是一段非常混乱的代码,而且形式也不太好

您可能想做的是将大部分代码包含在主方法中。您可以使用“使用良好的面向对象编程技术”,将代码从主方法组织到其他类中

我会这样做

public class CaesarCipher 
{
    public static void main(String[] args) 
    {
        for(int i=0; i<args.length; i++)
        {
            Cypher cypher = new Cypher(args[i]);
            System.Out.Println(cypher.Print());
        }
    }
}

您可以选择在构造函数、print方法或其他方式中进行加密。

我假设这里的情况无关紧要?如果您告诉我们当您决定运行程序时会发生什么情况,会有所帮助。这是我在eclipse中运行时得到的信息…线程“main”中出现异常错误:未解决的编译问题:CaesarCipher无法解析为CaesarCipher.CaesarCipher.main(CaesarCipher.java:5)处的变量你是如何运行它的?从Eclipse?从带args的命令行?Thegrinner,我在Eclipse中运行了我的实验室,然后我单击运行我的实验室,它在控制台中没有给我任何东西..我应该将它保存在html文件中以查看结果吗?如果它是一个家庭作业(标题本身说是这样的),不提供整个代码如何,并将其引导到正确的方向?您现在提供了一个关于如何复制和粘贴代码以避免学习的极好的教育。做得好。A.R.S我刚刚尝试过,但在控制台中它不会给我任何东西…请向我解释一下,我运行程序时应该在控制台中加密,还是我只是在编写代码?它说:在题名“我的密码实验室”和第一句“我的密码实验室”以及“我的指示是”带引号的作业表明这是课堂作业。其中哪一部分表示除家庭作业以外的任何内容?@KenWhite你想让我删除这个答案吗?@a.R.s.如果你愿意,你可以编辑它来帮助他,而不仅仅是给出完整的答案。好的,山姆,让我试着给我的实验室编码,我看看它会给我+1什么。这是一个好的答案回答这类问题的好方法。干得好。:-)
public class Cypher
{
    // fields to represent your cypher

    public Cypher(String s)
    {
        //load the input string into your cypher here.  
    }

    public String Print()
    {
        //print the encrypted string
    }
}