java - 使用循环从输入字符串中删除元音

原文 标签 java string for-loop input

我只需要5个字符长的输出即可,不计算已删除的元音。目前,我的代码正在计算输入长度,并返回该数字减去元音。这可能会造成混淆。如果输入“ idontthinkso”,则仅返回“ dnt”,而不是我希望打印的内容为“ dntth”。顺便说一句,我不允许使用Stringbuilder或类似的东西,只能循环使用,因此请原谅代码。我怎样才能解决这个问题?这是我的代码:

import java.util.Scanner;

public class TweetCompressor {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        String s = "";
        System.out.println("Type a tweet: ");
        String input = keyboard.nextLine();
        int f = 0;
        int tweetLengthAllowed = 5;

        for (int i = 0; i < tweetLengthAllowed; i++) {
            char c = input.charAt(i);
            if (c == 'a' ||
                    c == 'e' ||
                    c == 'i' ||
                    c == 'o' ||
                    c == 'u' ||
                    c == 'A' ||
                    c == 'E' ||
                    c == 'I' ||
                    c == 'O' ||
                    c == 'U') {
                f = 1;
            } else {
                s = s += c;
                f = 0;
            }
        }
        System.out.println(s);
    }
}

最佳答案

我非常赞成为此使用while循环,但是由于您说过您只能使用for循环...

问题是,即使检测到元音,您的循环也会迭代直到i = 5。我们需要一种方法来告诉循环假装从未发生过。您不能递减i,否则您将永远陷入同一角色。

这就是我的想法,我决定简单地增加tweetLengthAllowed来抵消i的增加。

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    String s = "";
    System.out.println("Type a tweet: ");
    String input = keyboard.nextLine();
    int f = 0;
    int tweetLengthAllowed = 5;
    for(int i = 0; i < tweetLengthAllowed; ++i) { //Must be a for loop
        char c = input.charAt(i);

        if(c == 'a'|| c == 'e'|| c == 'i'|| c == 'o'|| c =='u' || 
            c == 'A' || c == 'E' ||  c == 'I' ||  c == 'O' || c == 'U') {

            f = 1;
            tweetLengthAllowed++; //Allows the loop to continue for one more interation
        } //end if
        else{
            s = s += c;
            f = 0;
        }//end else
    } //end for
    System.out.println(s);

} //end main
} //end class


此外,如果您要使用大量的OR,请帮自己一个忙,使其更具可读性,就像我上面所做的那样。

关于java - 使用循环从输入字符串中删除元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840085/

相关文章:

python - 如何按字符串拆分列表

Python:For 循环遍历列表理解

python - 迭代删除numpy数组中的行

ios - NSManagedObject循环返回重复的Swift

java - 混合表达式和表达式语言 (<%= %> inside of c :if)

java - 使用版本的 hibernate 乐观锁定不起作用

java - 重写toString方法?

java - ExecutorService 超出范围时是否会被垃圾收集?

python - 计算某些文本中多字子串的出现次数

java - Java用来内部存储字符串的Charset是哪一个?