【问题标题】:Trying to figure out how to print a certain string, if the string contains a certain first character试图弄清楚如何打印某个字符串,如果字符串包含某个第一个字符
【发布时间】:2018-04-20 06:31:31
【问题描述】:

现在尝试弄清楚如何向 name.startsWith 添加多个搜索。 这样我就可以从添加的元素中找到搜索 a、e、i、o 和 u。而不仅仅是“a”。

"创建一个名为 printFizzBu​​zz() 的方法。此方法应循环遍历集合,并打印出元素(每个字符串在一行)。如果字符串以 a、e、i、o 或 u 开头,而不是打印字符串,它应该在该行打印“Fizz”。如果字符串以 A、E、I、O 或 U 开头,而不是打印字符串,它应该打印“Buzz”。例如,如果集合包含命名“香蕉”、“苹果”、“橙子”、“梨”、“桃子”、“猕猴桃”、“葡萄”,然后打印输出将如下所示: Fizz Buzz Fizz pear peach 猕猴桃”

 public class SchoolNames
 {
     private ArrayList<String> names;

    /**
     * Creates a collection of names.
     */
     public SchoolNames()
     {
        names = new ArrayList<>();
     }

    /**
     * Add a name to the collection.
     */
    public void addName(String Name)
    {
        names.add(Name);
    }

    /**
     * Remove a name from the collection.
     */
    public void removeName(int index)
    {
        if (index >= 0 && index < names.size()) 
        {
            names.remove(index);
            System.out.println("Name removed");
        }
        else
        {
            System.out.println("No names to remove");
        }
     }

    /**
     * Return the number of names stored in the collection.
     */
    public int getNumberOfNames()
    {
        return names.size();
    }

    public void listAllNames()
    {
        for (String name : names)
        {
            if (name.startsWith("a"))
            {
                System.out.println("Fizz");
            }
            else if (name.startsWith("A"))
            {
                System.out.println("Buzz");
            }
            else
            {
                System.out.println(name);
            }
        }
    }
}

【问题讨论】:

    标签: java


    【解决方案1】:

    您应该为此添加一个else 语句。如果ifelse if 中的所有条件都失败,则只执行else 部分,否则不执行

    if (name.contains("a")) {
        System.out.println("Fizz");
    } else if (name.contains("A")) {
        System.out.println("Buzz");
    } else {
        System.out.println(name);
    }
    

    更新: 如果需要检查字符串的开始元素,那么您应该检查name.startsWith("a")

    更新:

    问题: 是的!效果很好!我需要弄清楚的最后一件事是如何在 name.startsWith 中添加多个字符。我试过添加“a”,“e”。但它不起作用

    没有。它不应该在开始时接受单个字符串参数。您可以使用 or 运算符检查这一点。

    if (name.startsWith("a") || name.startsWith("e")//....rest of check)
    

    【讨论】:

    • 哇哦,你让我大开眼界了哈哈哈!谢谢你! :D 我也刚刚意识到 name.startsWith 存在,所以我现在也试试。
    • 是的!效果很好!我需要弄清楚的最后一件事是如何向 name.startsWith 添加多个字符。我试过添加“a”,“e”。但它不起作用
    【解决方案2】:

    你可以试试下面的sn-ps,

        String str ="Anglo"; //sample input
        String vowelinCaps = "AEIOU";
        String vowelinSmall = "aeiou";
    
        if (vowelinCaps.indexOf(str.charAt(0)) >= 0)
            System.out.println("Fizz");
        else if (vowelinSmall.indexOf(str.charAt(0)) >= 0) 
            System.out.println("Buzz");
        else
            System.out.println(str);
    

    更新-

    • char java.lang.String.charAt(int index)返回指定索引处的char值。

    • int java.lang.String.indexOf(int ch) 返回字符在表示的字符序列中第一次出现的索引 此对象,如果字符不出现,则为 -1。

    【讨论】:

      【解决方案3】:

      如另一个答案中所述,确实缺少else 语句。

      您可能还希望避免在每个字母 (a,e,i....) 中使用 if 语句,因此您可能会执行以下操作:

      for (String name : names)
      {
      
          char firstChar = name.charAt(0);
      
          if ("aeiou".indexOf(firstChar)>-1)
          {
              System.out.println("Fizz");
          }
          else if ("AEIOU".indexOf(firstChar)>-1)
          {
              System.out.println("Buzz");
          }
          else
          {
              System.out.println(name);
          }
      }
      

      【讨论】:

      • 是的,这就是我想要弄清楚的。我不知道如何搜索多个字母,只搜索一个。
      • 不幸的是没用:/刚刚打印了苹果和苹果
      • 抱歉有一个错误,indexOf 应该检查索引 > -1,而不是 > 0 。刚刚编辑了答案。(参见docs.oracle.com/javase/8/docs/api/java/lang/…
      【解决方案4】:

      您可以使用以下正则表达式代码根据您的模式替换单词

      public void findAndReplace(List<String> items) {
          StringBuffer stringBuffer = new StringBuffer();
          for(String eachItem : items) {
              if(isMatchFound(eachItem,"^[AEIOU]")) {
                  stringBuffer.append("Buzz");
                  stringBuffer.append(" ");
              }else if(isMatchFound(eachItem,"^[aeiou]")) {
                  stringBuffer.append("Fizz");
                  stringBuffer.append(" ");
              }else {
                  stringBuffer.append(eachItem);
                  stringBuffer.append(" ");
              }
          }
          System.out.println(stringBuffer);
      } 
      public Boolean isMatchFound(String item,String pattern) {
          return item.matches(pattern);
      }
      

      Regex : ^[AEIOU] 检查 [AEIOU] 数据集中字符串的第一个(^)字符。

      【讨论】:

        【解决方案5】:

        你也可以试试

        `String lowercase = "aeiou";
        String upercase = "AEIOU";
        String text = "apple";
        if(lowercase.contains(text.charAt(0))){
           System.out.println("fuzz");
        }else if(upercase.contains(text.charAt(0)))){
           System.out.println("buzz");
        }else{
          System.out.println(text)
        }`
        

        您可能必须使用String.valueOf(text.charAt(0)) 将其作为字符串

        【讨论】:

          【解决方案6】:

          你的意思是这样吗?:

          public class StringTest {
          
              public static void main(String args[]){
          
                  String  testString = "aatest";
                  if (testString.matches("(aa|bb|cc|dd|dd).*")){
                      System.out.println("true");
                  }
          
                  if(testString.startsWith("aa") || testString.startsWith("bb")){ // other conditions as well
                      System.out.println("true");
                  }
              }
          }
          

          【讨论】:

          • 这将检查字符串是否以 aa 开头,而不仅仅是 a,对于 apple 关键字它会失败
          猜你喜欢
          • 2014-09-22
          • 1970-01-01
          • 2014-03-22
          • 1970-01-01
          • 2012-01-27
          • 1970-01-01
          • 1970-01-01
          • 2011-01-22
          • 1970-01-01
          相关资源
          最近更新 更多