尝试将 class 的实例与变量类型进行比较时出错
Error when trying to compare instance of a class with a variable type
我遇到了 Java 空指针异常的问题。所以基本上我正在编写一个代码,要求用户输入 X 数据,然后根据他输入的数据类型,将它们添加为相应的变量类型,同时将其与其他先前存在的变量进行比较。
varvar A;
varvar B;
varvar C;
System.out.println("Choose what to do:");
System.out.println("1. Set variable A");
System.out.println("2. Set variable B");
System.out.println("3. Set variable C");
b = src.nextInt(); //next int into variable b
if(b==1){
while (src.hasNext()) { //Next thing the user is going to input
if (src.hasNextInt()) { // If it's an integer, do this :
if("Integer".equalsIgnoreCase(B.getClass().getSimpleName())){B = null;};
if("Integer".equalsIgnoreCase(C.getClass().getSimpleName())){C = null;};
最后两行基本上是我正在努力解决的问题。 B 和 C 是 class 个 varvar 实例。如果 B 和 C 的现有内容是 Integer 变量,我将尝试删除它们。但是每当我添加这两行时,我都会得到一个 Nullpointer 异常。这是早期的 varvar class 代码:
public static class varvar {
int x;
boolean y;
double z;
public varvar (int x){
this.x = x;
}
public varvar (boolean y){
this.y = y;
}
public varvar (double z){
this.z = z;
}
有人能帮帮我吗?我试图找到一种方法将 B 和 C 变量类型与 Integer 进行比较,如果它们确实包含 Integer 类型的变量,则删除它们。
您需要初始化 varvar A、B 和 C 以包含您的 class.
的实例
无论如何,如果您希望 class 对象与类型相关联,请使用
varvar.class.getSimpleName()
与您的变量 A、B 和 C 关联的 class 是 varvar 或其子class。
此外,您所说的 'delete' 是什么意思还不清楚。您似乎将变量设置为 null。
提高易读性的提示:class 名称应以大写字符开头,变量应以小写字符开头。
Java 是区分大小写的语言。 B和b不是一回事。在您的示例中,B 从未设置,因此它为空。
Java 有反射,所以所有带字符串的体操都在混淆代码。相反,试试这个:
if (Integer.isInstance(B)) {B = null;}
当你看这个,并且你事先知道(作为代码的作者)B 是 varvar 的一个实例,你可以看到代码是荒谬的,因为 varvar 类型的对象永远不可能是输入整数。
我不确定你想在这里完成什么,所以我不能给你比这更多的信息。
我遇到了 Java 空指针异常的问题。所以基本上我正在编写一个代码,要求用户输入 X 数据,然后根据他输入的数据类型,将它们添加为相应的变量类型,同时将其与其他先前存在的变量进行比较。
varvar A;
varvar B;
varvar C;
System.out.println("Choose what to do:");
System.out.println("1. Set variable A");
System.out.println("2. Set variable B");
System.out.println("3. Set variable C");
b = src.nextInt(); //next int into variable b
if(b==1){
while (src.hasNext()) { //Next thing the user is going to input
if (src.hasNextInt()) { // If it's an integer, do this :
if("Integer".equalsIgnoreCase(B.getClass().getSimpleName())){B = null;};
if("Integer".equalsIgnoreCase(C.getClass().getSimpleName())){C = null;};
最后两行基本上是我正在努力解决的问题。 B 和 C 是 class 个 varvar 实例。如果 B 和 C 的现有内容是 Integer 变量,我将尝试删除它们。但是每当我添加这两行时,我都会得到一个 Nullpointer 异常。这是早期的 varvar class 代码:
public static class varvar {
int x;
boolean y;
double z;
public varvar (int x){
this.x = x;
}
public varvar (boolean y){
this.y = y;
}
public varvar (double z){
this.z = z;
}
有人能帮帮我吗?我试图找到一种方法将 B 和 C 变量类型与 Integer 进行比较,如果它们确实包含 Integer 类型的变量,则删除它们。
您需要初始化 varvar A、B 和 C 以包含您的 class.
的实例无论如何,如果您希望 class 对象与类型相关联,请使用
varvar.class.getSimpleName()
与您的变量 A、B 和 C 关联的 class 是 varvar 或其子class。
此外,您所说的 'delete' 是什么意思还不清楚。您似乎将变量设置为 null。
提高易读性的提示:class 名称应以大写字符开头,变量应以小写字符开头。
Java 是区分大小写的语言。 B和b不是一回事。在您的示例中,B 从未设置,因此它为空。
Java 有反射,所以所有带字符串的体操都在混淆代码。相反,试试这个:
if (Integer.isInstance(B)) {B = null;}
当你看这个,并且你事先知道(作为代码的作者)B 是 varvar 的一个实例,你可以看到代码是荒谬的,因为 varvar 类型的对象永远不可能是输入整数。
我不确定你想在这里完成什么,所以我不能给你比这更多的信息。