2017-02-27 38 views
-5

我正在处理一个赋值,它让我们填写8种不同的方法。对于我正在处理的特定方法,我必须查看该字符串是否包含字母'G'并返回。我想出了一些我认为可行的事情,但事实并非如此。此外,这是一个基本的Java类,我很新,所以请解释你做了什么。编写一个方法来查看字符串x是否包含字母“G”

/** 
* Where is the location of the letter G (upper or lower case) in 
* the given string? 
* @param x String to check 
* @return 0 based location of first occurrence of G in x, 
*   -1 if G is not present. 
*/ 
public static int indexOfG(String x) { 
    char[] array = x.toCharArray(); 
    for(int i = 0; i < array.length; i++){ 
     if(array[i] == 'G'){ 
      return i ; 
     } 
    } 
} 
+1

对不起,这不是StackOverflow的是如何工作的方法。问题形式_“这是我的一堆代码,请为我调试”_被认为是无关紧要的。请访问[帮助]并阅读[问]以获取更多信息。 “不起作用”是不够的。 –

+3

首先,如果在字符串中找不到字母,最后(在for循环后)缺少'return -1;'。另外,该方法是不区分大小写的?如果是这样,将你的'if'改为:'if(array [i] =='G'|| array [i] =='g')'。 – AntonH

+0

为什么要创建一个字符数组?正如其他人所说,你可以使用x,indexOf()。如果你不允许这样做(即,如果你需要自己写),为什么不测试x.charAt(i)? – FredK

回答

2

Java String

已经有弦乐的的indexOf。

从甲骨文的Java文档:

的indexOf(字符串str) 返回此字符串中指定的子第一次出现的中的索引。

编辑

因为使用String方法可能不准,我可以给你实现自己的indexOf一些提示。

// This is a more concise and easier to read version 
public static int indexOfG(String str){ 

    for(int i = 0; i < str.length(); ++i){ 
     if(str.charAt(i) == 'G' || str.charAt(i) == 'g') return i; 
    } 
    return -1; 
} 

您应该尝试将此方法设置为通用方法,该方法接受第二个参数作为要查找的字符。

+0

'indexOf(int ch)'可能会更好。 – AntonH

+0

@AntonH在文档中他可以找到其他重载,所以没有什么大不了 –

+0

在开始的java类中很多时候都不允许使用某些标准java库方法。我猜这是这种类的情况。他将无法使用indexOf –

0
public static int indexOfG(String x) { 
    char[] array = x.toCharArray(); 
    for(int i = 0; i < array.length; i++){ 
     if((array[i] == 'G') || (array[i] == 'g')){ 
      return i ; 
     } 
    } 
    return -1; 
} 

上面的代码给出'g'的从零开始的第一个位置的正确位置。

Alternativly你也可以用下面的java字符串

公众诠释的indexOf(INT CH)

相关问题