java - Java ACM 中的凯撒密码

标签 java acm-java-libraries

我在使用 ACM 的 Java 中使用凯撒密码时遇到问题。这是我的代码:

import acm.program.*;

public class Ceasar extends ConsoleProgram{

  public void run() {
    println("This program encodes a
    message using a Caesar cipher.");

    int shifter=readInt("Enter the number of character positions to shift: ");
    String msg=readLine("Enter a message :");
    String Solution=encodeCaesarCipher(msg,shifter);

    println("Encoded message: "+Solution);
  }

  private String encodeCaesarCipher(String str,int shift){
    String result="";

    for (int i=0;i<str.length();i++){
      char helper=str.charAt(i);
      helper=(helper+shift);

      if (helper>'Z'||helper>'z') helper =(helper-26);
      if (helper<'A'||helper<'a') helper=(helper+26);

      result= result+helper;
    }

    return result;
  }
}

当我编译时出现这些错误:

Ceasar.java:21: error: possible loss of precision
  helper=helper+shift;
                ^
  required: char
  found: int

Ceasar.java:22: error: possible loss of precision
  if (helper>'Z'||helper>'z') helper =helper-26;
                                             ^
  required: char
  found: int

Ceasar.java:23: error: possible loss of precision
  if (helper<'A'||helper<'a') helper=helper+26;
                                            ^
  required: char
  found: int
3 errors

最佳答案

您不能在 Java 中将 int 添加到 char 中,除非明确声明您同意可能的精度损失(溢出/下溢)。在 intchar 一起使用的每个地方添加一个 (char) 转换。

关于java - Java ACM 中的凯撒密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20829305/

相关文章:

java - 当用户按下按键时创建移动对象(Java)

java - 为什么 getHeight() 方法在构造函数中不起作用?

java - 调用实现接口(interface)的泛型方法时出现错误 : java. lang.AbstractMethodError

java - Spring MVC。 POST 表单未绑定(bind)

java - 使用 acm 重构 java 中的 Hangman 输入检查

java - 在 acm.program.GraphicsProgram 中找不到符号方法 addMouseListeners()

java - 当新消息从 Firebase 实时数据库到达时如何发出通知声音

java - 通过二进制数组进行数组选择

java - tomcat 8 security 基于表单的身份验证自动登录

java - 保存和加载在java中不工作