- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我被困在我的一个类的一些代码上。我的教授鼓励在诸如此类的论坛上提问,尤其是因为这样给他的问题更少 :),所以我想我会向你们所有人寻求帮助。
我的任务的目的是通过移动或偏移字符来加密、解密和输入字符串,超过用户告诉它的次数。我的代码如下。
出于某种原因,我在解密我的加密文本时出错,并且该错误仅在运行我的代码时出现在数字为 6 或更多时,因此如果使用教授的示例并加密“subterfuge”以偏移 6 个字符来制作“yahzkxlamk”,然后尝试解密文本以再次偏移 6 个字符以制作“诡计”,这给了我一个错误。错误是
java.lang.StringIndexOutOfBoundsException: String index out of range: -6
当我使用相同的输入字符串“subterfuge”运行代码,但偏移量为 5 或更小时,它可以正常工作。据说该错误发生在下面代码的第 65 行,其中显示了
sb.append(alphabet.charAt(offset));
在最后一个 else
语句中我的 Decrypt()
方法的末尾。
import javax.swing.*;
public class Encryptor {
private String plainText;
private int shift;
public String cipherText;
public Encryptor() {
plainText = null;
shift = 0;
}
public static void main(String[] args) {
//encryption block
Encryptor e = new Encryptor();
String strCipherText = e.Encrypt();
System.out.println("encrypted text");
System.out.println(strCipherText);
//decrypt block
Encryptor d = new Encryptor();
//cipher text becomes the input text to the Decrypt method
d.cipherText = strCipherText;
String strPlainText = d.Decrypt();
System.out.println("decrypted text");
System.out.println(strPlainText);
System.exit(0);
}//end of main method
public String Decrypt()
{
plainText = cipherText;
shift = Integer.parseInt(JOptionPane.showInputDialog("enter offset"));
int offset=0;
int newOffset=0;
String alphabet ="abcdefghijklmnopqrstuvwxyz";
StringBuffer sb = new StringBuffer();
int index = plainText.length();
for(int i=0;i<index;i++)
{
String temp = "" + plainText.charAt(i);
offset = alphabet.indexOf(temp);
offset -= shift;
if(offset > 25)
{
newOffset = offset % 26;
sb.append(alphabet.charAt(newOffset));
}
else
{
sb.append(alphabet.charAt(offset));
}
}//end of for loop
return sb.toString();// return encrypted string
}
public String Encrypt()
{
plainText = ((String)JOptionPane.showInputDialog("enter words " + "to encrypt")).toLowerCase().trim();
shift = Integer.parseInt(JOptionPane.showInputDialog("enter offset"));
int offset=0;
int newOffset=0;
String alphabet = "abcdefghijklmnopqrstuvwxyz";
StringBuffer sb = new StringBuffer();
int index = plainText.length();
for(int i=0;i<index;i++)
{
String temp = "" + plainText.charAt(i);
offset = alphabet.indexOf(temp);
offset += shift;
if(offset > 25)
{
newOffset = offset % 26;
sb.append(alphabet.charAt(newOffset));
}
else
{
sb.append(alphabet.charAt(offset));
}
}//end of for loop
return sb.toString();// return encrypted string
}
最佳答案
这是你的问题:
offset = alphabet.indexOf(temp);
offset -= shift;
if(offset > 25)
{
newOffset = offset % 26;
sb.append(alphabet.charAt(newOffset));
}
else
{
sb.append(alphabet.charAt(offset));//< New offset is less than 0
}
你想要的是一个纯正的模函数。因此,只需在进行模块化划分后添加:
while(newOffset < 0)
newOffset += 26;
我倾向于做的只是为此创建一个函数:
/* Positive modular division. */
public static int pmod(int num, int mod)
{
num %= mod;
if(num < 0) num += mod;
return num;
}
关于Java 加密/解密分配 : Offsetting Characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28374067/
看来 OFFSET由于性能低下,不建议在处理大记录时使用类似 WHERE id < x LIMIT y 的东西. 如果是这种情况,为什么 OFFSET 存在,它还有其他用途吗? 最佳答案 从概念上讲,
我用过 objdump -M intel -d test 和 objdump -d test 使用 gcc 686-elf 交叉编译器反汇编一个非常简单的 for 循环。在这两种情况下,我都会得到以下
我正在尝试遵循本指南: https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html但我不明白为什么
我正在尝试遵循本指南: https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html但我不明白为什么
这个问题已经有答案了: MySQL Data - Best way to implement paging? (9 个回答) 已关闭 3 年前。 我是 SQL 世界的新手。 现在,我有以下查询: SE
托管我的db 的服务器位于美国。当我向 db 添加项目时,我希望使用 Australia/Sydney 时间存储时间。无论用户在哪个国家/地区,如果他们检索此记录,都应使用 Australia/Syd
我有一个 周边其中也有一些图像,和一段文字。 都是inline-block .每当 H2 延伸到两行时,下一个 是抵消。以下是屏幕截图。 HTML:
我正在尝试使用时区偏移量和 UTC 时间戳来调整时间。 我正在运行以下代码: var date = { utc: '2013-10-16T21:31:51', offset: -480
我不应该在我的应用程序中使用 jQuery,但我有一个场景,我需要元素的偏移量,而不是使用 $(element).offset() 我已经使用了 angular.element(element).of
我有一个包含 ID、NAME、PRICE 和 DATE 列的表。 我正在尝试编写一个分页式导航,因为表中有很多条目,所以查看整个 SELECT 的输出变得不舒服。 我写了以下请求: SELECT id
我现在已经多次看到提到的这段代码,执行 Max(a+1, a-1) 有什么意义?一开始我以为可能是为了防止下溢,但是在那种情况下不防止下溢真的没有意义。 最佳答案 谷歌搜索让我怀疑这可能是由某些(可能
我正在尝试创建一种将时间从一个时区转换为另一个时区的小方法。我认为这很简单,但是当我部署它时我得到了这个错误 The UTC Offset of the local dateTime paramete
我有一个相当复杂的 SQL 查询,涉及从大量连接返回大约 20 列,用于在 UI 中填充结果网格。它还使用几个 CTE 来预过滤结果。我在下面包含了查询的近似值(我已经注释掉了修复性能的行) 随着数据
所以我试图减去 datetime 对象。我使用 dateutil.parser 获得了一个,另一个来自 datetime.now()。我不断得到一个 TypeError: can't subtract
所以我试图减去 datetime 对象。我使用 dateutil.parser 获得了一个,另一个来自 datetime.now()。我不断得到一个 TypeError: can't subtract
我有一个 Pandas 数据框: name my_timestamp ------------------------------------------ 0 a1 201
我只是 Bootstrap 4 的初学者。 我最近才开始学习它,很遗憾,我已经遇到了问题。我修改了 Bootstrap 4 手册本身的一些代码。然而,它惨遭失败,偏移量无法正常工作。代码非常简单,但不
我尝试使用 R 进行回归。我有以下代码,导入 CSV 文件没有问题 dat <- read.csv('http://pastebin.com/raw.php?i=EWsLjKNN',sep="
假设我有 search.php 和 edit.php。在 search.php 中,他们可以删除和更新一些记录。如果用户单击“更新”按钮,系统会将用户重定向到另一个名为 edit.php 的页面。我成
我正在使用流行的 css hack 在 Internet Explorer 8 中启用边框半径,可在此处找到:( Curved-corner-border-radius-cross-browser)。
我是一名优秀的程序员,十分优秀!