2012-03-16 56 views
-3

确定,所以我有这样的和平代码Java--如何比较1个数组和1个字符串?

和内部的,如果有此而

  while (true) { 

        if (stringarray[1][a].equals(string2)) { 
        STUFF 


           } 
     a++ 

的问题是,(字符串数组[1] [A] .equals(字符串2))不工作,我不知道为什么,或者我该如何解决它。当它们是整数时,它可以工作,或者因为我可以做arraystuff [0] [a] ==变量,所以它可以工作,但它不适用于字符串,我做错了什么?感谢您的帮助

编辑:好,所以这是原来的(yep数组有117个不同的值) 数组(String stringarray [] [] = new String [2] [117]) 一个(整数,从0开始)串串=新的String( “”)字符串字符串2 =新的String( “”)

  string = stdIn.readLine(); 

      while (true) { 
        if (stringarray[0][a].equals(string)) { 
         break; 
        } 
        a++; 
        if (a == 118) { 
         break; 
        } 
      } 
     } 

如果我把一个的System.out.println(一) 一个即使在“字符串”中的文本是正确的,它应该是118,并且它应该早已停止

但是如果什么是while/if是数值va lue(例子2)的代码工程和一个显示号码

然后一个将是我正在寻找的数字。 例如,如果我在第一个代码中输入文本hi,并且文本hi在数字[0] [15]中,那么a将是15,但它不会发生,如果我输入482并且数字为[0] [34627]则是真正34627.希望这有助于

+5

定义“不起作用”。 – 2012-03-16 01:54:50

+1

你需要提供一些更多的细节。像你的数组的内容或者它们是如何被定义的 – 2012-03-16 01:55:41

+0

尝试打印出字符串的值来看看它是什么。 – L7ColWinters 2012-03-16 02:21:55

回答

1
String txt1 = "abc"; 
    String txt2 = "ABC"; 
    if(txt1.compareTo(txt2)==0) 
     System.out.println("Equal and same case"); 
    else if(txt1.compareToIgnoreCase(txt2)==0) 
     System.out.println("Equal but may not be same case"); 
    else 
     System.out.println("Not equal"); 

希望这有助于

+0

我试过了,它说不兼容的类型 – 2012-03-16 02:17:26

+1

compareTo()比'equals()'更好吗? – BalusC 2012-03-16 02:47:58

2

equals应该工作,但它是区分大小写。对于不敏感的情况,请尝试equalsIgnoreCase

另外我想知道如果你只使用索引0,那么你为什么要创建String [2][117]。您可以轻松创建String stringarray [] = new String [117]。这只有在你根本没有使用索引1的情况下。

1

请给出关于你的字符串数组的更多细节。 此外,如果您将数组定义为:String stringarray [] [] = new String [2] [117],那么a怎么可能是118?当a是117时,它应该抛出OutOfBoundsException ....

+0

如果您注意到计数器停留在搜索代码中,所以如果点击117并且搜索无法找到某种东西(触发中断),它会一直跟随if == 118打破一会儿,并且不允许执行新的循环并且因此OutOfBounds从未发生过,它关于订单的所有内容; D – 2012-03-16 05:07:36