将字符串传递给Java中的方法

时间:2016-12-11 19:47:19

标签: java

我正在尝试编写一个脚本,这个脚本加密了一个纯文本,并且到目前为止,它可以工作。我有一个变量偏移量,其范围是一个字母递增。加密方法只要它经过字符串,并按照偏移量的说明递增所有大写字母。 到目前为止都很好。但我很难将两者的值传递给方法加密。我可以通过创建实例轻松地将int传递给构造函数,但这对该方法不起作用。

// for notification itself
Intent notificationIntent = (new Intent()).setAction(INTENT_ACTION_HERE);
PendingIntent notificationPendingIntent = PendingIntent
        .getBroadcast(context, NOTIFICATION_INTENT_REQUEST_ID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

// for action button
Intent actionIntent = new Intent(this, YourBroadcastReceiver.class);
PendingIntent actionPendingIntent = PendingIntent
        .getBroadcast(context,  ACTION_INTENT_REQUEST_ID, actionIntent, PendingIntent.FLAG_UPDATE_CURRENT);

// execute onNotificationClick
mNotificationBuilder.setContentIntent(notificationPendingIntent);

// execute onButtonClick
mNotificationBuilder.addAction(R.drawable.button_icon, BUTTON_TEXT, actionPendingIntent);

我查了一些其他教程,但无法找到看起来像我的解决方案。所以在那里比较并不多。

修改

这是我得到的例外:

public class Caesar {

    int offset;

    public int kryptograph(int offset){
        return this.offset=offset;
    }

    public String encrypt(String klartext) {
        int wl = klartext.length()-1;
        String text = null;

        for(int i = wl; i >= 0; i++){
            if (Character.isUpperCase(klartext.charAt(i))){
                text += klartext.charAt(i)+kryptograph(offset);
            }
            else {
                text += klartext.charAt(i);
            }
        }
        return text;
    }

    /*public String decrypt(String text2) {
        ;
    }*/

    public static void main(String[] args) {

        Caesar o = new Caesar();
        o.kryptograph(7);
        Caesar k = new Caesar();
        k.encrypt("TEST");

    }

}

1 个答案:

答案 0 :(得分:3)

您的异常源 - 您开始从n-1元素迭代,但随后您递增i变量,因此您尝试在位置n处接收字符,这会导致此异常。

尝试用以下代码替换代码:

public class Caesar {

    private final int offset;

    public Ceasar(int offset){
        this.offset=offset;
    }

    public String encrypt(String klartext) {
     StringBuilder text = new StringBuilder();

     for(int i = klartext.length()-1; i >=0; i--){
        char value = klartext.charAt(i);
        if (Character.isUpperCase(value)){
            text.append(value + kryptograph(offset));
        } else {
            text.append(value);
        }
     }
     return text.toString();
    }

    /*public String decrypt(String text2) {
       // to  be implemented
    }*/

    public static void main(String[] args) {
        Caesar o = new Caesar(7);
        o.encrypt("TEST");
    }

}

Offset应该是final并绑定到Ceasar实例,这样每个Ceasar类实例将始终以相同的方式编码和完成。