2016-04-11 66 views
1

我是一个在网上练习的程序员在线编程的小菜鸟。我目前正在研究这个练习,这需要我在用户输入的任何参数字符串中找到substring“rat”。我知道这可能是一个菜鸟的错误,但我不知道如何解决错误。Java错误:“无法找到符号”位置变量

问题:

如果我们调用的方法ratSmeller与参数“百家乐”,该方法应该返回true,如果我们的说法“垫”调用它的方法必须返回false,并且必须返回如果用单词“rat”进行调用,则为true。现在你可以假设“鼠”总是以小写字母出现。

import java.util.Scanner; 

public class Rats { 
public boolean ratSmeller(String line) { 

    boolean found; 
    String[] strArray = new String[] {line}; 
     if (strArray.indexOf("rat") != -1) { 
      found = true; 
      }else{ 
      found = false; 
      } 
      return found; 

} 

public static void main(String args[]) { 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter a word and we will tell you if it contains the string 'rat' in it: "); 
    String word = scanner.nextLine(); 
    Rats rats = new Rats(); 
    System.out.println("Output: "); 
    System.out.println(rats.ratSmeller(word)); 
} 
} 

我唯一的错误是这样的:

Line 11 cannot find symbol if (strArray.indexOf("rat") != -1) {^symbol: method indexOf(String) location: variable strArray of type String[] 

不知道如何解决这一问题?请帮忙。谢谢!

回答

2
if (strArray.indexOf("rat") != -1) { 

这不会编译,因为strArray是一个Array对象。它没有indexOf方法。 String类具有该方法。

你可能想检查字符串是否有它。

if (line.indexOf("rat") != -1) { 

除此之外,你是过度使用变量和行String[] strArray = new String[] {line};是完全多余的。我没有看到任何理由删除单个元素的数组。

+1

这是答案,我会补充说,你使用混淆你的变量命名。你的变量'word'实际上是一行文本。 –

+0

@AndrewAitken准确地说,这个阵列在这里我不需要。这完全是多余的。 –

0

编辑您的功能ratSmeller:

boolean found=false; 

    if (line.indexOf("rat") != -1) 
    { 
     found = true; 
    } 

    return found; 
0

阵没有的indexOf方法。试试看,代替你的代码。 希望它会工作 -

public boolean ratSmeller(String line) { 

boolean found; 
List<String> strArray = new ArrayList<String>(); 
strArray.add(line); 
    if (strArray.indexOf("rat") != -1) { 
     found = true; 
     }else{ 
     found = false; 
     } 
     return found; 
    } 
相关问题