2016-06-10 81 views
-9

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

     } 
    } 
+4

你也不必提,你是新来的Java。它不会影响你的问题的处理方式,从问题中可以看出。 – Kayaman

+0

如果你可以阅读英文,那么错误信息就会自我'说'出了什么问题。 –

回答

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

+0

在什么情况下,你认为'String'将等于'Integer'?你为什么认为这比原来的错误更少? –

+0

@AndyTurner编辑。感谢您指出这一点 – Li357

-1

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

public String getStringArray() { 
    return name; 
    } 

改用此

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

在数组上调用'toString()'基本上是无用的,特别是当方法名称暗示它返回一个数组时。 –

+0

是的,你是对的...... thnx安迪 –