如何为此计划创建跑步者? (测试一下)

时间:2015-02-25 04:17:42

标签: java string do-loops runner

我正在编写一个计算字符串中元音量的程序,如果元音多于辅音,则返回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;
  }
}

如果你发现任何问题,除了建议我总是如此:)

这是我的"跑步者" (非常糟糕,哈哈):

import static java.lang.System。*;

import static java.lang.System.*;


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

谢谢:)

2 个答案:

答案 0 :(得分:0)

我不确定你的问题是什么,但既然你要求就你编写的代码提出建议,那就是我的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("");,这会给你一个数组 字符串中的字符,使用它会更好。
  4. 将每个字符转换为大写字母,然后将其与正则表达式进行比较, 意思是A,E,I,O或U。
  5. 保留辅音/元音的数量,返回只是比较一下 元音更大,如果是,则返回true。
  6. 有很多方法可以做到这一点。您可能想要考虑如果计数相等会发生什么...或者如果单词为null,则保护不受空指针等的影响,但这取决于您;)

答案 1 :(得分:0)

首先,您收到的错误消息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;
      }
   }
}