【问题标题】:The type of the expression must be an array type but it resolved to String1表达式的类型必须是数组类型,但它解析为 String1
【发布时间】:2015-08-06 10:30:02
【问题描述】:

您好,我是 java 新手,我想使用构造函数,将它与另一个类的参数一起传递。

但是eclipse给了我一个错误 “表达式的类型必须是数组类型,但解析为字符串”。

String sType = type[0]; 
String mName = type[1];

以上

请有人帮我解决以下问题并指出我的错误吗?

公共类 M { 字符串 [] 类型= 新字符串 [2]; 公共 M(字符串类型){ this.Type = Type.split("\\."); 字符串 sType = type[0]; 字符串 mName = 类型[1]; System.out.println(sType); } }

【问题讨论】:

  • 什么是Type?特别是 this.Type 在方法的第一行。

标签: java


【解决方案1】:

嗯,这里有两个问题。首先,你有:

this.Type = Type.split("\\.");

...它使用Type 而不是type

接下来,您使用的是type[0],它指的是名为type参数,而不是字段。

可以将其修复为:

public M(String type) {
    this.type = type.split("\\.");
    String sType = this.type[0]; 
    String mName = this.type[1];
    System.out.println(sType);
}

...但我会认真考虑将字段名称更改为 types 而不是 type - 或者可能是自定义类,如果这是一个总是期望有两个元素的数组意思。

(我也希望你的课程不是真的叫M...)

【讨论】:

  • 非常感谢。我错过了在这里输入的带有大写字母的类型,急于发布此内容。
  • @javaLearner101:以后请多花点时间。以牺牲其他几个人(试图免费帮助您的人)的一分钟时间为代价来节省您 30 秒的时间并不是一个好主意。理想情况下,提出一个简短但完整的程序来演示问题,并确保发布演示问题的准确程序。
【解决方案2】:

您对 Type 的大写字母 T 有意见吗? 属性是类型而不是类型

而你错过了关键字 this。

String mName = this.type[0]

【讨论】:

    【解决方案3】:

    你有

    this.Type = Type.split("\\.");
    

    但是没有字段名Type。

    【讨论】:

      【解决方案4】:

      这显然是缺乏关注。该代码包含大量不同的变量,称为“类型”,带有大小写字母或添加的字母等。type 是传递给构造函数的参数,它是String,因此会发生错误。这段代码风格很差。您应该使用更多不同的名称而不是不同版本的“类型”。

      【讨论】:

      • 感谢您的反馈
      猜你喜欢
      • 1970-01-01
      • 2021-07-24
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 2012-04-20
      • 2018-08-14
      相关资源
      最近更新 更多