【问题标题】:int cannot be dereferenced error in dr java [duplicate]java博士中的int无法取消引用错误[重复]
【发布时间】:2017-12-20 19:43:00
【问题描述】:

我正在尝试将一个字符串拆分为 3 个整数,但在 java 博士上出现错误“int cannot be dereferenced”,请帮助

代码:

public class ValidDate

{
  public int validYear;
  public int validMonth;
  public int validDay;

  public ValidDate(String validDate )throws Exception
  {
  validYear = Integer.parseInt(validDate).split[1];
 validMonth = Integer.parseInt(validDate).split[2];
    validDay = Integer.parseInt(validDate).split[3];
.....}

【问题讨论】:

  • Integer.parseInt(validDate) 返回一个intint 没有split 功能。提示:让我们使用 String 的 split 函数来拆分年、月、日 => 之后将这些字符串解析为 int
  • @TuyenNguyen 再看代码。使用 that 语法,split 不是方法。它是int[]Integer[] 类型的字段。注意使用[],而不是()
  • 如果你想解析日期字符串,为什么不直接使用内置日期解析器之一(DateTimeFormatterSimpleDateFormat)?
  • @Andreas 你应该注意到Integer.parseInt 返回一个intintInteger 没有任何字段或方法splitint[]Integer[] 也没有字段 split
  • @TuyenNguyen 我知道。我只是指出你假设 OP 试图使用 split() 方法调用,而语法不是方法调用语法。因此,您关于“int 没有split 函数”的说法虽然正确,但与语法不一致。说“int 没有split 字段”会更准确,并显示代码。

标签: java


【解决方案1】:

首先拆分字符串,然后将它们解析为 int。像这样:

public ValidDate(String validDate )throws Exception
{
    validYear = Integer.parseInt(validDate.split(" ")[0]);
    validMonth = Integer.parseInt(validDate.split(" ")[1]);
    validDay = Integer.parseInt(validDate.split(" ")[2]);
}

【讨论】:

    【解决方案2】:

    When looking at the documentation for Integer 我们看到它对可以馈送到parseInt() 的字符串类型非常具体。

    此外,您似乎正在尝试访问从 Integer.parseInt(validDate) 返回的 int 上的某个变量,称为 split,您认为这是一个数组。但是,您不能这样做,因为 int 是原始类型。这是您看到的错误的根源。

    【讨论】:

    • 1) 您可以拆分“\\D+”,因为您希望结果是所有数字值。 --- 2) 最后两行的意思是dateValues,而不是validDate? --- 3) 你的意思是[2] 在最后一行吗?
    • @Andreas 对于您的第 2 点和第 3 点,这就是我的意思。我将对其进行编辑,使其正确。就您的第一点而言,这是真的,但正如我在评论中所说,这真的应该由 OP 来决定。
    • @Andreas 我只是要删除代码示例。回想起来,OP 没有提供足够的信息让我给他一个有意义的例子。
    猜你喜欢
    • 2019-03-09
    • 2013-09-16
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 2016-05-09
    • 2016-02-21
    • 2012-11-03
    • 2015-04-25
    相关资源
    最近更新 更多