当前位置: 首页 > 知识库问答 >
问题:

无法在原始类型int错误上调用equals(String)?[关闭]

宋航
2023-03-14

想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。

我对下面的if语句块有问题:

public void viewaccount ( ) {
    Scanner getinput = new Scanner(System.in);
    System.out.println("Enter your account number to log in");
    int login = getinput.nextInt();
    if (login.equals("accnumber")) {   // <== here
        /* to be written */
    }
}

共有3个答案

石俊雄
2023-03-14

equals方法是Object类的方法。int等原始类型不是对象,无权访问equals方法。

当您想要比较基元类型时,您必须使用。在您的例子中,您试图将int(一个数字)与字符串(一个文本)进行比较,这没有意义-它始终是false

也许在您的情况下,您应该将输入读取为这样的字符串:

String login = getinput.next();

然后,您可以使用equals方法,因为login变量的类型将是扩展对象的字符串,并且可以与equals进行比较。

编辑:

如果仍希望以数字形式读取数据,则应随后将登录变量从int转换为String,以便将其与另一个字符串进行比较。

这是这样做的:

int login = getinput.nextInt();
    if (String.valueOf(login).equals("accnumber")) {   
        /* to be written */
    }

当然,这总是返回false,因此只有当您给出的字符串类似于“131423”时,这才有效。我真的希望这个“accnumber”是一个伪字符串,您仅用于示例。否则,我看不到任何其他好方法。

索瀚海
2023-03-14

如果要比较int,则不需要使用。equals()方法。由于要将输入转换为int,因此可以使用“==”将一个int与另一个int进行比较。此外,“accnumber”需要初始化为int变量。

宇文俊明
2023-03-14

<代码>。equals(String)是一种检查两个字符串是否包含相同字符/文本的方法。显然,您不能调用。检查int是否包含与字符串相同的字符,因为int不包含字符(当然,直到它转换为人类可读的形式)。

如果要检查用户输入的帐号是否正确,应执行以下操作:

public void viewaccount() {

    Scanner getinput = new Scanner(System.in);
    System.out.println("Enter your account number to log in");
    int login = getinput.nextInt();

    // Correct account number:
    int correctAccountNumber = 1234567;

    if (login == correctAccountNumber) {
        // Hooray! Success.


    }else{
        System.out.println("You have entered the incorrect account number.");
    }

}

如果这曾经在现实世界的应用程序中使用过,那么从安全的角度来看,这将是一场噩梦,但对于学习来说,这应该可以解决您的问题。

让您更深入地了解如何。equals()有效,我建议阅读Java对象类<代码>int是一种原始数据类型,因此它没有像字符串那样内置的方法<代码>字符串被认为是一种复合数据类型,它允许字符串具有类似的方法和属性。length()。等于()。trim(),等等。

在Java中,所有类都将对象作为一个超类,允许所有类和复合数据类型继承方法,例如。等于()。hashcode()和。toString(),但除此之外,所有复合数据类型也可以实现自己的方法。例如,整数数据类型(是原语int的包装器)添加了一些函数,例如。parseInt()和。compare()

与大多数语言不同,Java为所有这些数据类型提供了原始数据类型和内置包装类<代码>int具有整数<代码>布尔值具有布尔值<代码>长具有长<代码>字符具有字符。对于所有其他基元类型,这个列表还在继续。

 类似资料:
  • 我最近做了一个程序在处理Java加载图像和模糊它,但现在我把这个函数作为一个方法到一个类,得到了这个错误: 无法在原始类型int上调用blurImage(int,int,int) 我的班级: 我的代码调用它: 错误就在这条线上 i、 blurImage(blurDecrement,blurDecrement,round(maxBlur)); 我已经在互联网上搜索了这个问题,但没有得到我想要的东西。

  • 不知道如何让不出错。 非常迷茫。已尝试更改多行代码。 我希望它能够与< code > compare to(new number)没有问题。 错误消息:“无法对基本类型int调用< code>compareTo(int)

  • 我一直在尝试移植一段JavaScript代码,现在,我唯一尚未开始工作的部分出现了此错误:无法在原始类型int上调用padLz(int)。原始JavaScript代码在下面,同样是我的移植版本,我还无法工作的部分还突出显示。 错误: 无法在基元类型 int 上调用 padLz(int) 原件 移植版本 string grid ref = let pair ' ' e . padlz(digits/

  • 我目前正在学习如何使用遗传算法。然而,我在使用我的方法时遇到了困难。这种方法应该比较两个人之间的适应值。我一直试图调用我的

  • 问题内容: 这是hrert的问题Generic类与其他类型的Collectiongetter的后续文章。如果您可以为我的问题找到更好的标题,请随时对其进行编辑: 下面的代码包含一个具有返回类型方法的通用类和具有返回类型方法的另一个方法,显然与。 现在,如果我实例化一个原始数据(我永远不会做,所以这个问题更多是一个理论问题,以帮助理解正在发生的事情),那么在增强的for循环中调用该方法将不起作用,因

  • 我用Xcode开发了一个“Hello iOS”应用程序,可以在iOS模拟器上用Appium进行测试。然而,当我试图在真正的iPhone/iPad设备上测试同一个应用程序时,我收到了以下错误消息。 这是我的环境。 我尝试了这个命令“brew安装--HEAD ideviceInster”,但得到了另一条错误消息。 有什么解决办法吗?谢谢