java中的字符串数组错误?

时间:2016-06-10 05:34:23

标签: java

我是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());

        }
    }

2 个答案:

答案 0 :(得分:1)

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

public String getStringArray() {
    return name;
}

无效,因为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();时,它什么都不做,因为字符串数组是硬编码的。

答案 1 :(得分:-1)

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

public String getStringArray() {
   return name;
    }

改为使用此

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