2013-01-11 42 views
-1

前面嘿,我創建新項目的有關加密 這裏是我的代碼:的Java空出現在文本

private void encCaesar() { 

    char[] chars = plaintext.toCharArray(); 
    for (int z = 0; z < plaintext.length(); z++) { 
     char c = chars[z]; 
     if (c >= 32 && c <= 125) { 
      int x = c - 32; 
      x = (x + keyCaesar) % 96; 
      if (x < 0) 
       x += 96; 
      chars[z] = (char) (x + 32); 
     } 
    } 
    tempCipher = new String(chars); 
    Log.d("Caesar", tempCipher); 

} 

private void encRF() { 

    int skip; 
    int i, d, j; 

    for (d = 0; d < keyRF - 1; d++) { 
     skip = 2 * (keyRF - d - 1); 
     j = 0; 
     for (i = d; i < tempCipher.length();) { 

      ciphertext += tempCipher.charAt(i); 
      if ((d == 0) || (j % 2 == 0)) 
       i += skip; 
      else 
       i += 2 * (keyRF - 1) - skip; 
      j++; 
     } 
    } 

    for (i = d; i < tempCipher.length(); i += 2 * (keyRF - 1)) { 
     ciphertext += tempCipher.charAt(i); 
    } 
    Log.d("RF", ciphertext); 
    etCipher.setText(ciphertext); 
} 

btnEnc.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      try { 

       keyRF = 2; 
       String tempkey = key1.getText().toString(); 
       plaintext = etPlain.getText().toString(); 
       if (plaintext.trim().equals("")) { 
        { 
         AlertDialog alertDialog = new AlertDialog.Builder(
           SentSMSActivity.this).create(); 
         alertDialog.setTitle("Alert Dialog"); 
         alertDialog 
           .setMessage("Plain text masih kosong . . ."); 
         alertDialog.setButton("OK", 
           new DialogInterface.OnClickListener() { 
            public void onClick(
              DialogInterface dialog, 
              int which) { 
            } 
           }); 

         alertDialog.show(); 
        } 

       } 
       if (tempkey.trim().equals("")) { 
        Toast.makeText(
          getBaseContext(), 
          "Key 1 masih kosong, maka akan digunakan digunakan key default yaitu 2", 
          Toast.LENGTH_SHORT).show(); 
        key1.setText("2"); 
       } else if (Integer.parseInt(tempkey) > plaintext.trim() 
         .length() - 1) { 
        Toast.makeText(
          getBaseContext(), 
          "Key 1 nilainya melebihi plaintext, maka akan digunakan digunakan key default yaitu 2", 
          Toast.LENGTH_SHORT).show(); 
        key1.setText("2"); 
       } else { 
        keyRF = Integer.parseInt(key1.getText().toString()); 
       } 

       keyCaesar = 3; 
       if (key2.getText().toString().trim().equals("")) { 
        Toast.makeText(
          getBaseContext(), 
          "Key 2 masih kosong, maka akan digunakan digunakan key default yaitu 3", 
          Toast.LENGTH_SHORT).show(); 
        key2.setText("3"); 
       } else { 
        keyCaesar = Integer.parseInt(key2.getText().toString()); 
       } 

      } finally { 

       tempCipher = ""; 
       encCaesar(); 
       encRF(); 

      } 
     } 
    }); 

時單擊加密,加密凱撒第一次那麼RF。 我已經做了相反的RF那麼凱撒只是正常工作 但是當凱撒然後RF問題出現了 所以問題是,當認爲密文是「XYZ」,而是它出現「nullXYZ」

+0

初始化您的字符串變量請問您可以發佈其餘的課程嗎? – davioooh

+0

好的等待........ – Trutone

回答

3

null String獲取「空'時轉換爲String。嘗試用

String ciphertext = ""; 
+0

等待,試圖... – Trutone

+0

謝謝你:D,搞定了! – Trutone