我正在为我的作业加密代码,我希望对其他所有字母进行加,减,乘和除。例如“这是一条消息”。我想在密钥中添加“T”,从密钥中减去“h”,将“i”乘以密钥,然后将“s”除以密钥。
我想知道是否有办法更改运算符而不是重复相同的代码块4次?
以下是我想重复的部分代码:
+我想交换 - * /
newletters[x]=(char) (letters[x]+key[x]);
这是方法的其余部分:
public static void LetterChange(){
int x=0;
int tocarry;
int newkey;
newletters=new char[size];
for (int count=0; (sizeofstring/4)>count; count++){
//ADDITION
newletters[x]=(char) (letters[x]+key[x]);
//If character too big
if (newletters[x]>126){
tocarry=(int)newletters[x]-127;
newletters[x]=(char) (33+tocarry);
}
//If character too small
if (newletters[x]<33){
tocarry=(int)33-newletters[x];
newletters[x]=(char) (127-tocarry);
}
x=x+1;
}
}
答案 0 :(得分:2)
使用<a><span id="1" class="">TextOne</span></a>
<a><span id="2" class="">TextTwo</span></a>
<a><span id="3" class="">TextThree</span></a>
<a><span id="4" class="">TextFour</span></a>
$('span').on('click', function(){
var element = this.id;
$('.owl-carousel').trigger("to.owl.carousel",element);
});
应该可以解决问题
ScriptEngine
将数学表达式作为字符串来解决它
但要说实话,这看起来像是一个hacky解决方案 但无论如何这是有效的。 尝试和测试。
导入
ScriptEngine
代码
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
答案 1 :(得分:2)
将您的方法签名更改为:
public static void letterChange(IntBinaryOperator op)
修改您想要重复的行,如下所示:
newletters[x] = (char) op.applyAsInt(letters[x], key[x]);
使用您喜欢的运算符调用新方法,例如:
letterChange((c1, c2) -> c1 + c2);
letterChange((c1, c2) -> c1 * c2);
letterChange((c1, c2) -> c1 - c2);
letterChange((c1, c2) -> c1 / c2);
答案 2 :(得分:1)
Java 不支持支持用户定义的运算符重载。如果您需要执行这些操作的多个代码,请考虑将它们移动到单独的方法。
答案 3 :(得分:0)
你不能做这样的事情:
for (int x=0; x<sizeofstring; x++){
switch( x % 2 ){
case 0: newletters[x]=(char) (letters[x]+key[x]); break;
case 1: newletters[x]=(char) (letters[x]-key[x]); break;
}
//If character too big
if (newletters[x]>126){
tocarry=(int)newletters[x]-127;
newletters[x]=(char) (33+tocarry);
}
//If character too small
if (newletters[x]<33){
tocarry=(int)33-newletters[x];
newletters[x]=(char) (127-tocarry);
}
}
这样字母1将使用+,字母2将使用 - ,字母3将使用+,字母4将使用 - ,等等。
注意我删除了*和/。我们已经在问题的评论中讨论过/并且*我担心会给你超过127的价值,这意味着你的错误纠正&#34;将无法纠正它们。