【发布时间】:2021-07-12 23:44:43
【问题描述】:
我的代码接受用户输入并检查某些字符。如果发现不需要的字符,程序会再次要求用户输入,但是如果我要在文本末尾键入特殊字符,例如“hello@”,然后当我再次要求输入时,我会键入“hello”,我得到一个“字符串索引超出范围:5”错误。我怎样才能重新初始化 max 变量,以便当输入长度改变时,for 循环中的 max 变量也会改变。 我尝试再次分配 max 变量,但没有运气。
Scanner keyboard= new Scanner(System.in);
System.out.println("Please enter text to encrypt:");
String input = keyboard.nextLine();
String text = input.toUpperCase();
char letter;
int max = text.length();
for(int i =0; i<max;i++){
letter = text.charAt(i);
while(letter=='@'||letter=='\''||letter==';'||letter==':'||letter==','||letter=='<'||letter=='.'||letter=='>'||letter=='/'||letter=='?'||letter=='#'||letter=='~'||letter=='['||letter==']'||letter=='{'||letter=='}'||letter=='='||letter=='+'||letter=='-'||letter=='_'||letter==')'||letter=='('||letter=='*'||letter=='&'||letter=='^'||letter=='%'||letter=='$'||letter=='$'||letter=='£'||letter=='"'||letter=='!'||letter=='`'||letter=='¬'||letter=='\\'||letter=='|'){
System.out.println("Invalid Input\nPlease enter text to encrypt:");
input = keyboard.nextLine();
text = input.toUpperCase();
letter = text.charAt(i);
i=-1;
}
max=text.length();
}
【问题讨论】:
标签: java for-loop conditional-statements