【问题标题】:How to use a Boolean variable when reading through user input读取用户输入时如何使用布尔变量
【发布时间】:2019-10-15 22:23:26
【问题描述】:

在我的代码中,我正在创建一个用户可以输入短语的窗口。然后我设置一个for循环来读取输入并在任何元音之前添加ub。我现在的问题是,如果用户输入是aeiou,我想要的输出是ubaeiou 而不是ubaubeubiuboubu。我相信布尔变量会有所帮助,但我被困在如何做这部分。

public void buttonPressed() {

    String line = input1.getText(); 
    String finline;
    finline = "";
    line = line.toLowerCase();

    for(int i =0; i < line.length(); i++) {
        if((line.charAt(i) == 'a') || (line.charAt(i) == 'e') || (line.charAt(i)     == 'i') || (line.charAt(i) == 'o') || (line.charAt(i) == 'u')) 
         {
          finline = finline + "ub" + line.charAt(i);
         }

        else 
         {
          finline = finline + line.charAt(i);
         }
    }
    output.setText(finline);
}

用户输入 = aeiou

输出 = ubaubeubiuboubu

期望的输出 = ubaeiou

【问题讨论】:

  • 我认为你需要展示更多你想要的例子。如果你有“aba”,它会扩展为“ubaba”还是“ubaba”?

标签: java for-loop if-statement boolean user-input


【解决方案1】:

你想在 LINE 的第一个元音上加上“ub”前缀吗?然后使用布尔值触发提前退出循环。

public void buttonPressed() {

    Boolean done = false;
    String line = input1.getText(); 
    String finline;
    finline = "";
    line = line.toLowerCase();

    for(int i =0; i < line.length() && !done; i++) {
        if((line.charAt(i) == 'a') || (line.charAt(i) == 'e') || (line.charAt(i)     == 'i') || (line.charAt(i) == 'o') || (line.charAt(i) == 'u')) 
         {
          finline = finline + "ub" + line.charAt(i);
          done = true;
         }

        else 
         {
          finline = finline + line.charAt(i);
         }
    }
    output.setText(finline);
}

或者,如果您想在每个单词的第一个元音上使用它,您需要将布尔值用于元音检查条件,并确保它在分词时关闭。

public void buttonPressed() {

    Boolean checkVowel = true;
    String line = input1.getText(); 
    String finline;
    finline = "";
    line = line.toLowerCase();

    for(int i =0; i < line.length(); i++) {
        if(checkVowel && ((line.charAt(i) == 'a') || (line.charAt(i) == 'e') || (line.charAt(i) == 'i') || (line.charAt(i) == 'o') || (line.charAt(i) == 'u'))) 
         {
          finline = finline + "ub" + line.charAt(i);
          checkVowel = false;
         }

        else 
         {
          finline = finline + line.charAt(i);
          if (line.charAt(i) == ' ') checkVowel = true;
         }
    }
    output.setText(finline);
}

【讨论】:

    【解决方案2】:

    试试这个:

        String line = "aeiou";
        String finline;
        finline = "";
        line = line.toLowerCase();
        Boolean flag = true;
        for (int i = 0; i < line.length(); i++) {
            Boolean flagLine = (line.charAt(i) == 'a') || (line.charAt(i) == 'e') || (line.charAt(i) == 'i') || (line.charAt(i) == 'o')
                    || (line.charAt(i) == 'u');
            if (flag && flagLine) {
                finline = finline + "ub" + String.valueOf(line.charAt(i));
                flag = false;
            }
    
            else {
                if(!flagLine) flag = true;
                finline = finline + String.valueOf(line.charAt(i));
            }
        }
        System.out.println(finline);
    

    输入 = aeiou 输出 = ubaeiou

    输入 = aeqou 输出 = ubaequbou

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 2022-07-06
      • 1970-01-01
      • 2011-10-11
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多