Java与不同运营商的重复操作

时间:2016-03-31 16:59:39

标签: java operators

我正在为我的作业加密代码,我希望对其他所有字母进行加,减,乘和除。例如“这是一条消息”。我想在密钥中添加“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;
    }
}  

4 个答案:

答案 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;将无法纠正它们。