gpt4 book ai didi

Java:凯撒密码不会打印

转载 作者:行者123 更新时间:2023-11-29 07:04:29 25 4
gpt4 key购买 nike

代码编译正常,但最后没有打印任何内容。我是编码的新手,已经为此工作了几个小时,而且还在苦苦挣扎。

代码如下:

import java.util.Scanner;
public class caesartwo {
public static void main(String[] args) {

Scanner keyboard = new Scanner(System.in);
String originalText;
int shiftValue;

//encryption
System.out.println("What text would you like to encrypt?");
originalText=keyboard.nextLine();

//shift value
System.out.print("\nWhat is the shift value? ");
shiftValue=keyboard.nextInt();

//encrypted string
String encryptedText=encrypt(originalText,shiftValue);

//print result
System.out.println("\nThe encrypted text is:\n" + encryptedText);
}
public static String rotate(String userString, int shiftValue) {
String convertedText = "";
for(int i = 0; i < userString.length(); i++){
char lowerLetter = userString.charAt(i);

//uppercase conversion
char upperLetter = Character.toUpperCase(lowerLetter);
int charNumber = upperLetter;

//shift and wrap
int rotateShift = (charNumber + shiftValue) % 26;
char shiftLetter = (char) rotateShift;

//shifted chars
convertedText += shiftLetter;
}
return convertedText;
}
public static String encrypt(String userString, int shiftValue) {
String encryptedString = rotate(userString , shiftValue);
return encryptedString;
}
}

现在我不得不再写一些文字,因为我的代码文本太多等等等等。

最佳答案

rotate() 方法中的变量有些模糊。您应该提取它们并使它们成为实例变量,而不是让循环的每次迭代都创建新变量。你可以更简单地做到这一点。将您的旋转方法替换为以下内容:

public static String rotate(String userString, int shiftValue) { 
String convertedText = "";
int offset = shiftValue % 26 + 26;
int j;
for(int i = 0; i < userString.length(); i++){
j = (userString.charAt(i) - 'a' +offset) % 26;
convertedText += (char) (j+'a');
}
return convertedText;
}

测试它,它现在吐出一个值。从这里劫持算法:http://rosettacode.org/wiki/Caesar_cipher#Java

关于Java:凯撒密码不会打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21396495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com