2015-09-11 32 views
0

我是相当新的Java和我试图用indexOf来检查一个人的名字是否以数组中的字母结尾并输出一个字它押韵用。我哪里错了?例如院长以“ean”结尾,所以它用绿色押韵。谢谢你们我如何检查数组中的数据与indexOf在java

String [] first = new String [3]; 
    first [0] = "eem"; 
    first [1] = "een"; 
    first [2] = "ean"; 

    for (int i = 0; i < first.length; i++) { 

     if (first[i].indexOf(first.length) != -1){ 
      System.out.println("That rhymes with green"); 
     } 
    } 
+0

看到我的代码,让我知道如果我失去了一些东西。直接在我的机器上运行它,它为我工作。 – Jordon

回答

0

您应该使用endsWith而不是indexOfindexOf将返回传递的字符串与当前字符串完全匹配的索引,顾名思义,endsWith将检查当前字符串是否以传入的字符串结尾。

看看下面的代码:

String personName = "Dean"; 
String[] suffix = {"eem", "een", "ean"}; 
String[] names = {"greem", "green", "grean"}; 

for(int i = 0; i < suffix.length; i++) { 
    if (personName.endsWith(suffix[i])){ 
     System.out.println("That rhymes with " + names[i]); 
    } 
} 

此外,理想情况下,你会想保留地图suffix -> name可维护性,但是为了简单/探索这应该是罚款。

+0

感谢您的帮助!什么伟大的社区分开:) –

2

要与气象检查输入包含给定元素的任何数组,你应该得到input,然后遍历您的阵列来看待。例如

String personname = "Dean"; 
    String [] first = new String [3]; 
    first [0] = "eem"; 
    first [1] = "een"; 
    first [2] = "ean"; 

    for (int i = 0; i < personname.length; i++) {  
     if (input.indexOf(first[i]) != -1){ // check my input matched 
      System.out.println("That rhymes with green"); 
     } 
    } 
+0

只是为了搭载这个。 OP代码破坏的原因是因为你正在测试阵列长度的第一个数组的内容。 'first [i] .indexOf(...)'将通过“eem”,“een”和“ean”循环,并检查是否有等于长度的字符。所以你要检查你的代码是否“eem”有3个,而不是输入是否有“eem”。 – Braains

+0

这个问题的部分是如何解决的,OP想知道输入是否与其他数组中的一些押韵结尾。 –

+0

@FabianBarney是对的。列出的代码会说“Deanery”与“绿色”押韵。 OP应该使用endsWith()而不是indexOf()。 – FredK

0

我已经在编译器上测试并运行了它。这工作正常。请评论任何问题。由于

import java.util.*; 

public class HelloWorld 
{ 

    public static void main(String []args) 
     { 
      String [] first = new String [3]; 
      first [0] = "eem"; 
      first [1] = "een"; 
      first [2] = "ean"; 

      /* I am trying to get the input from user here */ 

      String s; 
      Scanner in = new Scanner(System.in); 
      System.out.println("Enter the string:"); 
      s = in.nextLine(); 

      /* Now, String.indexOf(substring) will check the condition if the match happens it will print the output, if it doesn't it returns -1 */ 

      for (int i = 0; i <s.length(); i++) 
       {  
        if (s.indexOf(first[i]) != -1) 
         { 
          System.out.println("That rhymes with green"); 
         } 
       } 

     } 
}