一个检查连续字母的程序 - Java

时间:2016-12-12 16:19:33

标签: java string alphabetical

我正在寻找有问题的帮助。在学习了大量的C ++之后,我们刚开始在课程中学习简单的java。

我们的一项奖励任务是为那些了解代码而不是课堂教学的人。

任务如下:通过名称lettersSeries编写一个函数,该函数从用户输入字母(一次一个字母,假设所有字母都是小写)。一旦用户输入了3个连续的字母,该功能就停止接受来自用户的信件。 (仅适用于没有while循环的循环)

示例:a - > b - > a - > c - > d - > e(这是停止)

到目前为止,我不太了解,如果有人能帮助我,我会很高兴...我尝试了一些选项,但我不知道如何追踪字母表,特别是如何检查字母是否连续...

谢谢!

public static void letterSeries() {
    //We create a scanner for the input
    Scanner letters = new Scanner(System.in);
    for(Here I need the for loop to continue the letters input) {
      //Here I need to know if to use a String or a Char...
      String/Char letter = next.<//Char or String>();
      if(Here should be the if statement to check if letters are consecutive) {
          /*
              Here should be
              the rest of the code
              I need help with
          */

显然,你可以改变代码,而不是制作我的模式,我会以更简单的方式更快乐!

4 个答案:

答案 0 :(得分:0)

你可以使用字符&#39;用于检查字母是否连续的Unicode编号:如果a和b是您的字母,请尝试检查b - a == 1.如果结果性是以不区分大小写的方式(&#39; B&#39;连续到& #39; a&#39;然后检查:(b - a == 1 || b - a == 33)。

答案 1 :(得分:0)

在这里我将如何解决这个问题,我会让你填补空白,但我不会为你完成所有的功课。

private void letterSeries() {
    Scanner scanner = new Scanner(System.in);
    char prevChar;
    char currChar;
    int amountOfConsecutives = 0;
    final int AMOUNT_OF_CONSECUTIVES = 2;

    for(;;) {
        // Take in the users input and store it in currChar
        // Check if (prev + 1) == currChar
            // If true, amountOfConsecutives++
            // If false, amountOfConsecutives = 0;
        // If amountOfConsecutives == AMOUNT_OF_CONSECUTIVES
            // Break out of the loop
    }
}

答案 2 :(得分:0)

private void letterSeries() {        
    Scanner letters = new Scanner(System.in);
    String last = "";
    int counter = 0;
    for (;counter < 2;){
        if ( last.equals (last=letters.next())) counter ++;
        else counter = 0
    }
}

答案 3 :(得分:0)

Scanner letters = new Scanner(System.in);
char previousChar = '\0';
int consecutive = 1;
for(; consecutive != 3 ;){
    char userInput= letters.findWithinHorizon(".", 0).charAt(0);
    if (userInput - previousChar == 1){
        consecutive++;
    } else {
        consecutive = 1;
    }
    previousChar = userInput;
}

我对这个解决方案作了一点欺骗。我使用只有中间部分的for循环,所以它就像一个while循环。

无论如何,这是它的工作原理。

前三行为用户输入创建扫描程序,consecutive变量计算用户输入的连续字母数,以及previousChar来存储前一个字符。

“为什么consecutive从1开始?”你可能会问。好吧,如果用户输入一个字母,它将自己连续。

在for循环中,只要consecutive != 3,代码就会运行。循环中的第一行我们使用findWithinHorizon(".", 0).charAt(0)读取一个字符。然后if语句检查它是否是带有前一个字符的连续字母。如果是,请在consecutive中添加一个,如果不是,请将consecutive重置为一个。最后,我们将previousChar设置为userInput以准备下一次迭代。