【发布时间】:2014-01-25 20:32:41
【问题描述】:
我已经阅读并试图找到答案,但一直无法找到。我创建了一个在其自己的类中工作的方法,具有两个字符串参数,然后使用它们返回一个字符串值。然后我试图在另一个类中调用一个类中定义的这个方法,但我得到一个空指针异常。我已经尝试了几件事,测试了不同的方法来做到这一点,但一直无法让它发挥作用。请原谅我糟糕的编程约定,我才刚刚开始。这是返回字符串的方法:
public class Cipher {
public static String encrypt(String Tobeencrypted , String key)
{
row row[] = new row[26];
for (int counter = 0; counter < 26 ; counter++ )
{
row[counter] = new row();
for (int counter2 = 0; counter2 < 26 ; counter2++){
int charnumber = counter + 97 + counter2;
if (charnumber > 122){
charnumber = charnumber - 26;
}
row[counter].alpha[counter2] = (char)(charnumber);
}
}
int numberofcharacters = Tobeencrypted.length();
int keylength = key.length();
char keychar[] = new char[numberofcharacters];
int keyindexvalue = 0;
for (int counter = 0 ; counter < numberofcharacters ; counter++){
if (keyindexvalue == keylength)
keyindexvalue = keyindexvalue - keylength;
keychar[counter] = key.charAt(keyindexvalue++);
}
char textchars[] = new char[numberofcharacters];
for (int counter = 0 ; counter < numberofcharacters ; counter++){
textchars[counter] = Tobeencrypted.charAt(counter);
}
String encryptedstring = "";
for (int counter = 0 ; counter < numberofcharacters ; counter++){
textchars[counter] = row[(int(keychar[counter])-97].alpha[(int)
(textchars[counter])-97];
encryptedstring = encryptedstring + textchars[counter];
}
return encryptedstring;
}
当我在 Cipher 类中有一个 main 方法使用它时,此方法非常有效。但在以下代码中使用该方法时,该方法不返回任何内容。这些文件都在同一个源文件夹中:
public class testingmethod {
public static void main(String[] args) {
try {
Scanner diskScanner = new Scanner(new File("C:/Users/Isaac/Desktop/test.txt"));
int counter = 0;
String random ="";
while ( diskScanner.hasNext()){
random = diskScanner.next();
counter++;
}
//counter tells you the exact amount of strings there are if there are 10 strings counter = 10
String strings[] = new String[counter];
int counter2 = 5;
while ( diskScanner.hasNext()){
strings[counter2] = diskScanner.next();
counter2++;
}
String encrypted[] = new String[counter];
Cipher cipher = new Cipher();
PrintStream diskWriter = new PrintStream(new File("C:/Users/Isaac/Desktop/test.txt"));
String password = JOptionPane.showInputDialog("What password would you like to use? (please make this one word)");
for ( int counter3 = 0 ; counter3 < counter ; counter3++){
encrypted[counter3] = cipher.encrypt(strings[counter3], password);
diskWriter.print(encrypted[counter3] + " ");
if(counter3 % 11 == 0) diskWriter.println("");
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();}
}
}
我已根据您所有可爱的帮助进行了更改,并且打印语句有效,但现在我有一个空指针异常,这是我使用 tobeencrypted = String() 解决的问题。
错误是:
Exception in thread "main" java.lang.NullPointerException
at introtojava.Cipher.encrypt(Cipher.java:43)
at introtojava.testingmethod.main(testingmethod.java:34)
非常感谢,
艾萨克
【问题讨论】:
-
试试
println而不是print?也许标准输出没有被刷新。 -
在您的建议后尝试过,但仍然没有返回任何内容
-
他们给你的答案是正确的。我建议开始使用 Java 代码约定编写代码,因为每个人(包括未来你自己)都会更容易理解您的代码:)
-
问题是我忘记了它们,我确实尝试过,但全神贯注于试图让它工作却忘记了
-
第 43 行是什么???
标签: java string class methods return