这可能是一个简单的修复,但我似乎无法解决它.
我试图在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;
不适合我
简单:
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)
(免责声明:我刚刚写下了上面的代码;那里可能存在拼写错误或小错误;它应该是"伪代码"让你走了!)
除此之外:我找到了该方法的名称; 以及它如何处理该布尔字段...有点令人困惑.你看,如果加密是真的 ......方法什么都不做?!然后它不会"切换"任何东西.因此,这个名字真的是误导性的.不匹配你的代码正在做什么!
归档时间: |
|
查看次数: |
95 次 |
最近记录: |