因为循环不能很好地工作

时间:2015-01-05 09:46:38

标签: java for-loop runtime-error

package learning;
import java.util.* ;

public class Learning {

    public static void main(String[] args) {
        String normal , cipher;
        String shiftstr;
        int shiftint, s;

        System.out.println("Welcome To Ceasar Shift Creator");
        Scanner in = new Scanner(System.in);
        normal = in.nextLine();
        char[] proc = normal.toCharArray();
        int length;
        length = normal.length();
        System.out.println("Ok now tell me how many times you want it to be shifted ");
        shiftstr = in.nextLine();
        shiftint = Integer.parseInt(shiftstr);

        s = 0;
        for(int i =0; i < length ; i++){
            while( s < shiftint){
                proc[i]++;
                s++;
            }
            System.out.print(proc[i]);
        }
    }

我希望整个单词向前移动相同的否定。用户提到的时间。但只有第一个字母被移位。我知道我没有做得很正确,但仍然帮助我...

2 个答案:

答案 0 :(得分:1)

i为0时,内部while循环只输入一次。这就是为什么只有proc [0]被更改的原因。

你不需要内循环:

    for(int i =0; i < length ; i++){
      proc[i]+=shiftint;
      System.out.print(proc[i]);
    }

答案 1 :(得分:1)

需要在for-Loop中将

设置回0。

    for (int i = 0; i < length; i++) {
        while (s < shiftint) {
            proc[i]++;
            s++;
        }
        System.out.print(proc[i]);
        s=0;
    }