有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数据结构java。尝试打印或引用存储类中的int[]和int时发生lang.ClassCastException

我有一个简单的类似数据库的项目,它将用户名和加密密码放在HashMap中,在一个单独的HashMap中,将用户名和一个存储对象(称为PasswordData)关联起来,该存储对象包含一个整数数组(加密库将其用作密钥)和一个库也使用的整数。这一切都很好,但问题出现在代码的第二个函数中。我有一些方法专门用于将HashMap复制到文件中,后者可以读取,文件中的信息可以在HashMap中恢复。但是,当尝试对PasswordData内的变量执行任何操作时,我会遇到以下异常:

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to webappserver.PasswordData".

我发现,无论我如何处理上述变量,JVM都声称我试图将存储类转换为字符串。如果我遗漏了任何重要信息,请通知我,我将尝试编辑任何可能需要的内容

存储类:

public class PasswordData{
    public int[] key;
    public int  index;
    PasswordData(int[] key, int index){
        this.key = key;
        this.index = index;
    }
    public int[] returnKey(){
        return key;
    }
    public int returnIndex(){
        return index;
    }
}

窃听方法:

public void writeFilePassData(HashMap passData,  String fileName) throws IOException {
    ArrayList<String> usersArrayList = new ArrayList<>(passData.keySet());
    ArrayList<PasswordData> passwordDataArrayList = new ArrayList<> (passData.values());
    BufferedWriter save = new BufferedWriter(new FileWriter(fileName));
    for(int i =0; i< usersArrayList .size(); i++){
        int[] ex = passwordDataArrayList .get(i).returnKey();
        save.write(usersArrayList .get(i) + '\n');
        save.write(ex.toString());
        save.write(passwordDataArrayList .get(i).returnIndex().toString());
    }
    save.close();
}

注意:printStackTrace将for语句的第一行标记为ClassCastException的位置,但是删除它只会导致现在修改为Save.write(passwordDataArrayList.get(i).returnKey().toString());的第二条语句返回相同的错误


共 (0) 个答案