2015-10-27 4 views
0

Я просто познакомился с методами моего класса MIS, и у меня возникли проблемы с интеграцией методов для совместной работы. Мне нужно создать 3 отдельных метода управления кодом. Объект должен иметь возможность либо подсчитать количество слов в предложении, либо подсчитать количество гласных в слове, то, как вы переключаетесь между методами, вводите v, w или q для выхода. Мой код только выплевывает входные данные из основного метода, и мне нужно, чтобы он ссылался на другие методы для правильной работы. Я не знаю, как ссылаться на другие методы в моем коде. Может ли кто-нибудь сказать мне, что я делаю неправильно? Большое спасибо, ребята!Методы Не ссылаются друг на друга

Верхний метод - мой основной метод, средний - мой метод подсчета слов, а третий - мой метод гласных.

import java.util.Scanner; 
public class P7_MethodTester 
{ 
public static void main(String[] args){ 

    System.out.println("Enter v to count vowels, w to count words, and q to quit"); 
    Scanner in = new Scanner(System.in); 
    System.out.print("Enter a letter: "); 
    String str = in.next(); 
    while(str != "q") 
    { 
    if(str.equals("w")){ 
     System.out.println("Please input your sentence: "); 
     String w = in.next(); 

     System.out.println("You input " + countWords(str) + " words"); 
    } 
    else if(str.equals("v")){ 
     System.out.println("Please input your sentence: "); 
     String v = in.next(); 
     System.out.println("You input " + countVowels(str) + "vowels"); 
    } 
    else{ 
     System.out.println("Program terminated"); 
    } 
} 
} 

public static int countWords(String w){ 

    int wordCount = 0; 

    boolean word = false; 
    int endOfLine = w.length() - 1; 

    for (int i = 0; i < w.length(); i++) { 
     if (Character.isLetter(w.charAt(i)) && i != endOfLine) { 
      word = true; 
     } else if (!Character.isLetter(w.charAt(i)) && word) { 
      wordCount++; 
      word = false; 
     } else if (Character.isLetter(w.charAt(i)) && i == endOfLine) { 
      wordCount++; 
     } 
    } 
    return wordCount; 
} 

public static int countVowels(String v){ 
    int vowels_count = 0; 
    for (int i = 0; i < v.length(); i++) { 
     char current_char = Character.toLowerCase(v.charAt(i)); 
     if (current_char == 'a' || current_char == 'e' || current_char == 'o' 
     || current_char == 'i' || current_char == 'u' || current_char == 'y') { 
      vowels_count += 1; 
     } 
    } 
    return vowels_count; 
} 

} 
+1

Вы отметили этот вопрос с помощью javascript. Java и JavaScript не совпадают. Это распространенная ошибка. –

+4

Вы передаете 'w' или' q' или ... в качестве параметров вместо введенного 'предложения'. – sam

ответ

1

Вместо вызова функции countWords и countVowels с «ш» и «v» вы прошли ул для обеих функций

1

Есть целый ряд вещей, которые приходят на вопрос. Как вы хотите оценить предложение как «w» или «q» или «v»

Я предлагаю вам создать экземпляр new Scanner после первого.

while (!str.equals("q")) { 
    in = new Scanner(System.in); 

Таким образом, вы представляете 2 записи. Я бы, вероятно, не использовал while.

Также обратите внимание на использование Scanner.nextLine() для всего предложения.

И, наконец, пройти w или v не str в качестве аргументов countWords и countVowels.

Вы должны думать о программе как шаги:

  1. спросить Действие
  2. Получить предложение
  3. выполнить действие
  4. и повторить или выход.
+0

Я беру это обратно. Я бы использовал 'while', но для целей рекурсивного вызова метода. –

Смежные вопросы