【问题标题】:String array error in java?java中的字符串数组错误?
【发布时间】:2016-10-10 23:16:42
【问题描述】:

我是java编程语言的新手,谁能告诉我以下错误的原因。

错误:

不兼容的类型:java.lang.String[] 无法转换为 java.lang.String

public class StringArray {

        String[] name = {"abc", "def", "ghi"};

        public void setStringArray() {
            for (int i = 0; i < name.length; i++) {
                if (name.equals(i)) {
                    System.out.println("print");
                } else {
                    System.out.println("wrong");
                }
            }

        }

        public String getStringArray() {

            return name;
        }



        public static void main(String[] args) {
            StringArray sa = new StringArray();
            sa.setStringArray();
            System.out.println(sa.getStringArray());

        }
    }

【问题讨论】:

  • 您也无需提及您是 Java 新手。它不会影响您的问题的处理方式,从问题中可以明显看出。
  • 如果你能看懂英文,那么错误信息就是“说”出了什么问题。

标签: java


【解决方案1】:

你需要改变两件事。一、方法

public String getStringArray() {
    return name;
}

无效,因为名称的类型是 String[],而不是 String。这是正确的:

public String[] getStringArray() {
    return name;
}

其次,你的 for 循环逻辑是错误的。

        for (int i = 0; i < name.length; i++) {
            if (name.equals(i)) {
                System.out.println("print");
            } else {
                System.out.println("wrong");
            }
        }

这会检查 String[] 是否等于整数。这不是正确的逻辑。您需要通过 name[i] 获取索引,然后执行类似 try catch 语句来解析字符串中的整数。

        for (int i = 0; i < name.length; i++) {
            try {
                var nameInt = Integer.parseInt(name[i]);
                if (nameInt.equals(i)) {
                    System.out.println("print");
                } else {
                    System.out.println("wrong");
                }
            } catch(Exception e) {
                e.printStackTrace();
            }
        }

您可以参考this 之类的问题,以更全面地了解如何从字符串中解析整数。

请注意:当您调用 sa.setStringArray(); 时,它什么也不做,因为字符串数组是硬编码的。

【讨论】:

  • 您认为在什么情况下String 将等于Integer?为什么你认为这比原来的错误少?
【解决方案2】:

在下面的方法中,您试图返回一个字符串数组,但您的方法的返回类型是“String”,它不兼容,因为您不能将字符串数组类型转换为字符串。

public String getStringArray() {
   return name;
    }

改用这个

public String getStringArray(){ 
    return name.toString();
}

【讨论】:

  • 在数组上调用toString()基本上是没用的,尤其是当方法名暗示它返回一个数组时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多