2015-02-11 103 views
0

我在Java中遇到了麻烦。Java:如何使用子串读取数组中的字符串

我想读取if Statement中使用子字符串的数组的字符串。

我想知道index[0]这个“P”的第一个字符串是什么,那么它会打印一些东西。

但我的代码有问题。

public static void main (String[] args){ 

String someArr[] = new String[] {"P 2 #rock", "Q 1 #paper "}; 

for(int x = 0; x <= someArr.length; x++) { 

    if (someArr[0].substring(0,1) == "P") { 

     System.out.println(someArr[0] + " " + "Select something"); 

    } 

    else if (someArr[1].substring(0,1) == "Q"){ 

     System.out.println(someArr[1] + " " + "Select paper"); 

    } 

    } 

} 
+2

您应该使用的charAt和比较字符,而不是字符串。 – Stultuske 2015-02-11 12:09:35

+1

它也应该是someArr [x],而不是0和1,并且您的for循环应该在迭代数组时使用“<”而不是“<=”。 – thedoctor 2015-02-11 12:11:48

回答

0

使用'equals()'而不是'=='。您正在比较参考...

+0

非常感谢。感谢您回答我的问题。问题解决了。 – bracket17 2015-02-11 13:37:28

0

在您的代码中,您总是阅读第一个和第二个条目。 尝试在循环中使用x变量。 FE

public static void main (String[] args){ 

String someArr[] = new String[] {"P 2 #rock", "Q 1 #paper "}; 

for(int x = 0; x <= someArr.length; x++) { 

    if (someArr[x].substring(0,1).equals("P")) { 

     System.out.println(someArr[x] + " " + "Select something"); 

    } 

    else if (someArr[x].substring(0,1).equals("Q")){ 

     System.out.println(someArr[x] + " " + "Select paper"); 

    } 

    } 

} 
+1

最好使用equals()而不是== – 2015-02-11 12:12:44

+0

非常感谢。感谢您回答我的问题。问题解决了。 – bracket17 2015-02-11 12:31:47

0

您应该使用x作为索引。

public static void main (String[] args){ 
    String someArr[] = new String[] {"P 2 #rock", "Q 1 #paper "}; 

    for(int x = 0; x <= someArr.length; x++) { 
     switch (someArr[x].substring(0,1)) { 
     case "P": 
      System.out.println(someArr[x] + " " + "Select something"); 
      break; 
     case "Q": 
      System.out.println(someArr[x] + " " + "Select paper"); 
      break 
     } 
    } 
} 

switch字符串只在Java 7

+0

最好使用equals()而不是== – 2015-02-11 12:13:32

+0

非常感谢。感谢您回答我的问题。问题解决了。 – bracket17 2015-02-11 13:37:13

1

是合适的。在Java对象之间使用的运算符“==”返回true,当且仅当这两个变量引用完全相同的对象。

当你声明字符串“P”时,你实际上创建了一个新的对象,它不能与数组中的子字符串相同。要检查“语义平等”,您需要使用.equals()。

if (someArr[0].substring(0,1).equals("P")) 

应该有结果,你希望

+0

好。我正在输入相同的答案。 – 2015-02-11 12:13:56

+0

非常感谢。感谢您回答我的问题。问题解决了。 – bracket17 2015-02-11 12:30:55

相关问题