2014-11-02 4 views
0

Я взял этот вопрос на другой сайт раньше, но они были просто довольно грубыми - я очень новичок в Java, поэтому, пожалуйста, будьте голыми со мной, когда я пытаюсь понять ваше объяснение. Вот сделка: я пытаюсь взять строку, которую пользователь вводит и возвращает гласные в строке. Ошибка я получаю следующим образом:Не могу найти символ для моего метода

> VowelsA3.java:13: error: cannot find symbol 
>   if (isVowel.isVowelValid(letter) = true) 
>      ^ symbol: method isVowelValid(char) location: class isVowel 

Вот мой код «VowelsA3» (мое главное, что не будет компилировать):

import java.util.Scanner; 
public class VowelsA3 
{ 
     public static void main (String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Please enter a string."); 
     String userInput = scan.nextLine(); 
     char letter = 'x'; 
     for (int i = 0; i <= userInput.length(); i++) 
     { 
      letter = userInput.charAt(i); 
      if (isVowel.isVowelValid(letter) = true) 
      { 
      System.out.println(letter); 
      }   
     }  
    } 
} 

Вот мой метод «isVowel», который компилируется :

public class isVowel 
{ 
    public static boolean isValidVowel(char letter) 
    { 
     boolean trueVowel = false; 
     { 
     if (letter == 'a' || letter == 'e' || letter == 'i' || letter == 'o' || letter == 'u') 
     { 
      trueVowel = true; 
     } 
     else 
     { 
      trueVowel = false; 
     } 
     return trueVowel; 
     } 
    } 
} 

Любые идеи? Мне сказали, что я идиот для использования «== true» в строке, где ошибка связана с тем, что мой метод возвращает true/false в любом случае, но я думал, что должен сделать это, чтобы оператор if работал - без меня спрашивает, истинно ли возвращаемое значение, я не знаю, является ли это гласным, верно? Я здесь совершенно не понимаю, это мой первый опыт работы с методами, поэтому, пожалуйста, учтите это при ответе на мой вопрос.

Заранее спасибо.

ответ

0

isVowel - это класс, а isValidVowel() - метод внутри этого класса. Поэтому вы должны позвонить isVowel.isValidVowel (письмо).

isValidVowel вместо isVowelValid.

Вы должны назвать isVowel. естьValidVowel (письмо) == true.

Фактически, поскольку isValidVowel (letter) возвращает true/false, вам не нужно проверять == true. Просто позвоните если (isVowel. isValidVowel (письмо)) System.out.println (письмо);

+0

Я идиот. О, парень. – notywq

+0

Это нормально, чтобы ошибиться ^^! Просто расслабься. – DML

0

Вы должны использовать CLASSNAME.STATIC_METHOD_NAME (параметры)

if (isVowel.isValidVowel(letter) == true) 

вместо

if (isVowel(letter) == true) 

Итак, поскольку у вас есть isVowel как имя класса, так что вы косяк использование имя_класса (параметр) вместо этого вам нужно использовать метод classname.isVowel.

Также вам нужно будет ваш цикл будет изменен с

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

Для

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

Также для сравнения следует использовать в качестве

if (isVowel.isVowelValid(letter)) //or use == 

вместо

if (isVowel.isVowelValid(letter) = true) 
+0

Я - идиот. Общее число. – notywq

0
isVowelValid 
isValidVowel 

Характер предупреждения. Это не одно и то же.

Кроме того, это будет ошибка компиляции после того, как вы исправить опечатку:

//        v 
if(isVowel.isValidVowel(letter) = true) 

= является оператором присваивания. Вы хотите использовать ==, который предназначен для сравнения.

0

Вы метод, как вы определили, что называется:

isValidVowel 

Метод, который вы вызываете это:

isVowelValid 

разницу? Имя метода, которое вы вызываете, не совпадает с именем метода, которое вы определили.

Изменение розарий:

if (isVowel.isValidVowel(letter) == true) 

И тогда он будет работать.

(Обратите внимание, что вам нужно использовать оператор сравнения == вместо операции присваивания =, или вы можете оставить всю == true часть в целом)

0

Измените if(...) в VowelsA3 к

 if (isVowel.isValidVower(letter)) 

И не

 if (isVowel.isVowelValid(letter) = true) 
Смежные вопросы