Как создать бегун для этой программы? (Чтобы проверить это)

Я пишу программу, которая подсчитывает количество гласных в строке, и если гласных больше, чем согласных, она возвращает true. Если нет, то ложь. Это домашнее задание, но бегун в него не входит. Я хочу проверить, работает ли моя программа, что и должно быть (надеюсь!).

Теперь на все наши домашние задания и лабораторные работы обычно дается бегунок. Нас никогда не учили, как его писать, что довольно плохо, так как я хотел бы проверить свой код. Я пытался имитировать прошлые бегуны, но продолжал получать ошибки в своем бегуне, некоторые из которых гласили: «Не удается найти символ». Как мне создать бегун для этой программы?

Вот мой код:

import static java.lang.System.*;
public class StringAnalyzer {
  //String word;
  public static boolean hasMoreVowelsThanConsonants(String word) {
    // String word = string.toUpperCase();
    int vowelCount;
    int newLength;
    for (vowelCount = 0; word.length() >= 1; vowelCount++) {

      if (word.indexOf("A") != 1) {
        vowelCount++;
      } else if (word.indexOf("E") != 1) {
        vowelCount++;
      } else if (word.indexOf("I") != 1) {
        vowelCount++;
      } else if (word.indexOf("O") != 1) {
        vowelCount++;
      } else if (word.indexOf("U") != 1) {
        vowelCount++;
      }


      newLength = (word.length() - vowelCount);

      if (vowelCount > newLength) {
        return true;
      } else {
        return false;
      }

    }
    return true;
  }
}

Если у вас возникнут какие-либо проблемы, я всегда буду без советов :)

Вот мой "бегун" (довольно плохой, ха-ха):

импортировать статический java.lang.System.*;

import static java.lang.System.*;


public class StringAnalyzerRunnerCDRunner {
  public static void main(String[] args) {
    hasMoreVowelsThanConsonants("DOG");
  }
}

Спасибо :)


person Nicole I.    schedule 25.02.2015    source источник
comment
Я собираюсь предположить, что под бегуном вы имеете в виду точку входа в программу/основной метод... Помимо того факта, что вы ничего не печатаете в своем основном методе (System.out.println(hasMoreVowelsThanConsonants(DOG))), являются вы получаете конкретную ошибку?   -  person Adrian Leonhard    schedule 25.02.2015
comment
Прочитайте stackoverflow.com/a/19161184/1980909. Обратите внимание, что вы можете заменить второе предложение if на return (vowelCount > newLength);, а newLength следует называть consonantCount.   -  person Adrian Leonhard    schedule 25.02.2015


Ответы (2)


Я не совсем уверен, в чем ваш вопрос, но, поскольку вы просите совета по коду, который вы написали, вот мой 2c.

Некоторые настройки:

public class StringAnalyzer {

    public static void main(String[] args) {

        String word;

        word = "Dog";
        System.out.println(word + " has more vowels than consonants? " + hasMoreVowelsThanConsonants(word));

        word = "Ace";
        System.out.println(word + " has more vowels than consonants? " + hasMoreVowelsThanConsonants(word));
    }

    public static boolean hasMoreVowelsThanConsonants(String word) {
        int vowelCount = 0;
        int consonantCount = 0;

        String[] split = word.split("");
        for(String s : split){
            if(s.toUpperCase().matches("A|E|I|O|U")){
                vowelCount++;
            } else {
                consonantCount++;
            }
        }

        return vowelCount > consonantCount;
    }
}

Некоторые моменты, которые я изменил:

  1. Удален неиспользуемый системный импорт, он не требуется
  2. Добавлен основной метод, который является вашей точкой входа или «раннером», как вы его называете.
  3. Представлен split word.split("");, это даст вам массив символов из String, с ним немного приятнее работать.
  4. Преобразуйте каждый символ в верхний регистр, а затем сравните его с регулярным выражением, означающим A, E, I, O или U.
  5. Сохраняется количество согласных/гласных, возврат просто сравнивает, если гласных больше, и возвращает true, если это так.

Есть много способов сделать это. Возможно, вы захотите подумать, что произойдет, если счетчики равны... или если слово равно null, защитите от нулевых указателей и т. д., но это зависит от вас;)

person Jimmy    schedule 25.02.2015

Прежде всего, вы получили сообщение об ошибке error: cannot find symbol: пакетный класс не был импортирован и/или вы допустили ошибку в имени переменной, класса или метода.

Другой подход:

Вы можете назвать свой основной класс как таковой от public class StringAnalyzer{ до public class Main { или class StringAnalyzer

Я не хотел слишком далеко отходить от того, что у вас есть, но вот фрагмент другого подхода:

import java.lang.*;
import java.util.Scanner;

class StringAnalyzer
{

   public static void main(String args[])
   {
      Scanner in = new Scanner(System.in);
      String sampleword = in.nextLine();
      System.out.println("You entered string: "+sampleword);
      System.out.println("Is your vowels more than the consonants: "+ hasMoreVowelsThanConsonants(sampleword));
   }

    private static boolean hasMoreVowelsThanConsonants(String word) {
        int vowelCount = 0;
        int newLength = 0;

        for (int i = 0; i < word.length(); i++) {
          if (word.charAt(i) == 'A') {
            vowelCount++;
          } else if (word.charAt(i) == 'E') {
            vowelCount++;
          } else if (word.charAt(i) == 'I') {
            vowelCount++;
          } else if (word.charAt(i) == 'O') {
            vowelCount++;
          } else if (word.charAt(i) == 'U') {
            vowelCount++;
          }
        }

        newLength = word.length() - vowelCount;

        return vowelCount > newLength;
      }
   }
}
person André.    schedule 25.02.2015