【发布时间】:2017-03-05 13:32:07
【问题描述】:
我正在实现一个算法,当用户给出输入字符串时,字符串中的每个字符(如果是字母表)都应该按给定的值递增(这里是旋转器)。我正在使用此代码 2 小时,但无法弄清楚为什么当我按值 rotator 递增时,它会按 rotator-1 递增。
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner in = new Scanner(System.in);
int length = in.nextInt();
String input = in.next();
int nextvalue = 0;
int temp = 0;
char array[] = input.toCharArray();
int rotator = in.nextInt();
for(int i = 0; i < length; i++){
if((array[i] >= 'a' && array[i] <= 'z') || (array[i] >= 'A' && array[i] <= 'Z')){
nextvalue = (int)array[i] + rotator;
array[i] = (char)nextvalue;
if((int)array[i] > (int)'z'){
temp = (int)array[i] - (int)'z';
nextvalue = (int)'a' + temp -1;
array[i] = (char)nextvalue;
}
else if((int)array[i] > (int)'Z'){
temp = (int)array[i] - (int)'Z';
nextvalue = (int)'Z' + temp -1;
array[i] = (char)nextvalue;
}
}
}
System.out.println(array);
}
}
如果有两个if语句要处理(溢出条件)如果字母> z或> Z,则首先在里面。现在,如果我删除这两个语句,除了溢出条件之外的所有内容都会正确打印
(无溢出条件) 样品 I/P:
11
中产阶级
2
样品 O/P:
okffng-Qwv|
(有溢出条件) 样品 I/P:
11
中产阶级
2
样品 O/P:
njeemf-Qvub
为什么会这样?我还检查了 inner if condition 中使用 print 语句,因为只有一个溢出条件,它只为这个输入执行一次。
感谢您的帮助/建议。谢谢。
【问题讨论】:
-
char array[]语法不正确。你的意思是char[] array? -
反对者请发表评论!
-
@Gooz 实际上,我认为这是合法的语法,虽然可能不是您在 Oracle 官方网站上看到的。
-
@Gooz 在 java 中都有效
-
@TimBiegeleisen,哦,真的,我真的不知道。
标签: java if-statement increment