在我的作业中,我必须通过在ASCII表上移动其字符来加密一个单词,然后以反向打印我所做的。
我已经创建了两个方法,一个名为encrypt,另一个名为reverse,但是,我不能得到正确的输出,但我确信我的方法是100%工作(程序也应该使用句子如在空格中不应加密)
我应该拥有的样本:
=> java加密
请输入一个句子或单词:Hello World
pmmfI emspX
以及我应该遵循的条件来回忆这些方法:
我的代码:
import java.util.*;
public class Encrypt {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.println("Please enter a sentence or a word: ");
encrypt(reverse(console.next()));
}
public static String reverse (String text){
for( int i = text.length()-1 ; i >= 0; i--){
System.out.print(text.charAt(i));
}
return text;
}
public static String encrypt (String text){
for( int i =0 ; i < text.length(); i++){
char X = text.charAt(i);
int ascii = (int)X;
if(ascii == 32){
System.out.print(" ");
}
else {
System.out.print((char) (ascii+1) );
}
}
return text;
}
}
我不知道主要做什么,因为我不知道如何获得输出而只调用加密的方法之一
希望我不是很困惑
答案 0 :(得分:2)
您目前正在做的事情从根本上是错误的,因为它始终返回原始输入。它更像是一个 void 方法。您必须将加密的String存储在方法中并按如下方式返回。
public static String encrypt(String text) {
StringBuilder encrypted=new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char X = text.charAt(i);
int ascii = (int) X;
if (ascii == 32) {
encrypted.append(" ");
} else {
encrypted.append((char) (ascii + 1));
}
}
return encrypted.toString();
}
主要方法如下
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.println("Please enter a sentence or a word: ");
String encrypted=encrypt(console.nextLine());
System.out.println(reverse(encrypted));
}
答案 1 :(得分:1)
不应该调用System.out.println()
,而应将字符添加到返回的字符串:
public static String reverse (String text){
String ret = "";
for( int i = text.length()-1 ; i >= 0; i--){
ret=ret+text.charAt(i);
}
return ret;
}
使用其他方法执行相同操作,然后在主要内容中调用
System.out.println(encrypt(reverse(console.nextLine())));