在for循环期间添加ascii代码

Bri*_*ard 1 java for-loop

这可能是一个简单的修复,但我似乎无法解决它.

我试图在for循环期间为字符的ascii值添加一个整数.

它给了我程序期望变量而不是值的错误.我怎么能做我想在这里做的事情?

这是代码:

public boolean toggleEncryption(){
    if(encrypted == false){
        for(int i = 0; i < sentence.length(); i++){
            if(sentence.charAt(i) >= 65 && sentence.charAt(i) <= 90){
                int x = (int)sentence.charAt(i);
                x += key;
                while(x > 90){
                    x = x - 26;
                }
                sentence.charAt(i) += (char)x;
            }
        }
    }
    return encrypted;
}
Run Code Online (Sandbox Code Playgroud)

这条线sentence.charAt(i) += (char)x;不适合我

Gho*_*ica 6

简单:

sentence.charAt(i) += (char)x;
Run Code Online (Sandbox Code Playgroud)

你错误地认为这charAt()给了你一个"左手边"的东西.换句话说:你可以赋值的东西; 像一个变量.

但这是不可能的:charAt()返回一个char值; 表示该索引处字符串中的char.

没有给你一些允许你操纵字符串本身的东西!字符串是不可改变的; 你不能charAt()用来修改它的内容!

换一种说法; 你可以这样做:

char c = 'a';
c += 'b';
Run Code Online (Sandbox Code Playgroud)

但你不能charAt()用来实现同样的目标!

因此,为了使您的代码有效,您必须构建一个字符串,如:

StringBuilder builder = new StringBuilder(sentence.length());
for(int i = 0; i < sentence.length(); i++) {
  if(sentence.charAt(i) >= 65 && sentence.charAt(i) <= 90){
    int x = (int)sentence.charAt(i);
    x += key;
    while(x > 90){
      x = x - 26;
    }
    builder.append(sentence.charAt(i) + (char)x));
  } else {
    builder.append(sentence.charAt(i)); 
  }
}
Run Code Online (Sandbox Code Playgroud)

(免责声明:我刚刚写下了上面的代码;那里可能存在拼写错误或小错误;它应该是"伪代码"让你走了!)

除此之外:我找到了该方法的名称; 以及它如何处理该布尔字段...有点令人困惑.你看,如果加密是真的 ......方法什么都不做?!然后它不会"切换"任何东西.因此,这个名字真的是误导性的.不匹配你的代码正在做什么!