【发布时间】:2014-05-10 01:21:40
【问题描述】:
目前我有一个程序要求输入字符串,例如“Hello stackoverflow!”我试图让它增加一个大的随机数。问题是,一旦程序到达'~',它就必须开始倒退,然后一旦它到达'!',它就必须再次切换。 (! 是第一个 Ascii 符号,~ 是最后一个,中间有数字和字母。)到目前为止,这就是我所拥有的递增部分,但它并不完全有效:
for(int i = 0; i < inputStringB.length(); i++){
currentChar = inputString.charAt(i);
for(int e = 0; e < 1000; e++){
if(currentChar == '!'){
switchIncrement = 1;
} else if(currentChar == '~') {
switchIncrement = 0;
}
switch(switchInc){
case 0: currentChar--;
inputStringB.setCharAt(i, currentChar);
break;
case 1: currentChar++;
inputStringB.setCharAt(i, currentChar);
break;
default: currentChar++;
inputStringB.setCharAt(i, currentChar);
break;
}
}
System.out.println(inputStringB);
}
当我输入'Hello' 时,我收到:'n#J&)' 考虑到'Hello' 包含两个l,这是没有意义的,所以我希望'n#JJ)'
任何帮助都会很棒,谢谢!
完整代码:
import java.util.Scanner;
public class EncryptionMain {
public static void main(String args[]){
char currentChar;
String EorD;
int switchInc = 1; // 0 = BACK 1 = FORWARD
Scanner scanner = new Scanner(System.in);
System.out.println("Encrypt or decrypt: ");
EorD = scanner.next();
if(EorD.equalsIgnoreCase("e")){
System.out.println("Please enter text to encrypt: ");
String inputString = scanner.next();
System.out.println("Encrypting: '" + inputString + "' ");
System.out.println("...");
System.out.println("...");
System.out.println("...");
StringBuilder inputStringB = new StringBuilder(inputString);
for(int i = 0; i < inputStringB.length(); i++){
currentChar = inputStringB.charAt(i);
System.out.println(currentChar);
for(int e = 0; e < 1000; e++){
if(currentChar == '!'){
switchInc = 1;
}else if(currentChar == '~'){
switchInc = 0;
}
switch(switchInc){
case 0: currentChar--;
inputStringB.setCharAt(i, currentChar);
break;
default: currentChar++;
inputStringB.setCharAt(i, currentChar);
break;
}
}
System.out.println(inputStringB);
}
}else if(EorD.equalsIgnoreCase("d")){
System.out.println("Please enter text to decrypt: ");
String inputString = scanner.next();
System.out.println("Decrypting: '" + inputString + "' ");
System.out.println("...");
System.out.println("...");
System.out.println("...");
StringBuilder inputStringB = new StringBuilder(inputString);
for(int i = 0; i < inputStringB.length(); i++){
currentChar = inputStringB.charAt(i);
for(int e = 0; e < 1000; e++){
if(currentChar == '!'){
switchInc = 0;
}else if(currentChar == '~'){
switchInc = 1;
}
switch(switchInc){
case 0: currentChar++;
inputStringB.setCharAt(i, currentChar);
break;
case 1: currentChar--;
inputStringB.setCharAt(i, currentChar);
break;
default: currentChar--;
inputStringB.setCharAt(i, currentChar);
break;
}
}
inputStringB.setCharAt(i, currentChar);
System.out.println(inputStringB);
}
}
}
}
【问题讨论】:
-
那么你做了什么来调试它?
-
您的案例 1 不需要。默认值做同样的事情,如果没有明确的 1 情况,它会抓住它。
-
“随机数”从何而来?我在你给出的代码中没有看到任何随机性。
-
@ChrisMartin 我打算补充一点,一旦我解决了主要问题,我可能不应该这么说。
-
这将有助于发布编译代码。所有这些变量都未声明:
inputStringB、inputString、currentChar、switchIncrement、switchInc。