2017-02-21 38 views
0

我試圖讓一個程序使用OOP加密一個字符串,但由於某種原因,當我嘗試運行一個程序時,我總是得到這個錯誤,只是創建了一個對象。Java對象創建中的未知錯誤

Exception in thread "main" java.lang.NullPointerException 
at encryptionproject.Cipher12.<init>(Cipher12.java:8) 
at encryptionproject.TestExample.main(TestExample.java:7) 
C:\Users\22849\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 
BUILD FAILED (total time: 0 seconds) 

對象類:

public class Cipher12 { 

public String key1; 
public String ciphertext; 
public String plaintext; 
public int[] ikey = new int[key1.length()]; 
public int[] ictext = new int[plaintext.length()]; 
public int[] iptext = new int[plaintext.length()]; 

public void setKey(String key) { 
    this.key1 = key; 
} 

public void setPlaintext(String plaintext) { 
    this.plaintext = plaintext; 
} 

public void setCiphertext(String ciphertext) { 
    this.ciphertext = ciphertext; 
} 

public String getKey() { 
    return key1; 
} 

public String getCiphertext() { 
    return ciphertext; 
} 

public String getPlaintext() { 
    return plaintext; 
} 

public void convert(String s, int[] i) { 
    for (int j = 0; j < s.length(); j++) { 
     i[j] = (int) s.charAt(j); 
    } 
} 

public void convert(int[] i, String s) { 
    for (int j = 0; j < s.length(); j++) { 
     s += (char) i[j]; 
    } 
} 

public void encrpty() { 
    convert(key1, ikey); 
    convert(plaintext, iptext); 
    ictext = iptext; 
    for (int j = 0; j < ictext.length; j++) { 
     ictext[j] -= 31; 
     ictext[j] -= ikey[1]; 
     ictext[j] *= ikey[2]; 
     ictext[j] += 2 * ikey[3]; 
     ictext[j] -= (ikey[0] + ikey[1] + ikey[2] + ikey[3]); 
     ictext[j] += j * j; 
     while (ictext[j] > 95) { 
      ictext[j] -= 95; 
     } 
     ictext[j] += 31; 
    } 
    convert(ictext, ciphertext); 
} 

public void decrypt() { 
    convert(key1, ikey); 
    convert(ciphertext, ictext); 
    iptext = ictext; 
    for (int j = 0; j < iptext.length; j++) { 
     iptext[j] -= 31; 
     iptext[j] -= j * j; 
     iptext[j] += (ikey[0] + ikey[1] + ikey[2] + ikey[3]); 
     iptext[j] -= 2 * ikey[3]; 
     iptext[j] /= ikey[2]; 
     iptext[j] += ikey[1]; 
     while (iptext[j] > 95) { 
      iptext[j] -= 95; 
     } 
     iptext[j] += 31; 
    } 
    convert(iptext, plaintext); 
} 
} 

應用類別:

public class TestExample { 

public static void main(String[] args) { 

    Cipher12 t = new Cipher12(); 

} 

} 

可有人請幫我看看是什麼問題?並可能如何解決它?

+0

可能重複[什麼是NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-doi-i-fix -它) –

回答

1

key1被默認初始化爲空。初始化ikey時,調用key1.length(),key1爲空,因此拋出NPE。

public String key1; 
public int[] ikey = new int[key1.length()]; 

請提供一個以key1作爲參數的構造函數,並初始化構造函數中的所有屬性。