【问题标题】:Searching for specific character in string with static method使用静态方法搜索字符串中的特定字符
【发布时间】:2013-11-08 09:15:37
【问题描述】:

我必须编写一个程序来计算字符串中字母 B 的数量。我已经得到了那部分,但它还要求我使用一个静态方法,该方法根据字符串中是否有任何 B 来返回 true 或 false,我真的不知道如何放入该部分。

import java.util.Scanner;
public class CountB {

// write the static method “isThisB” here
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a string: ");
String w = keyboard.nextLine();
int count=0;
for (int i=0; i<w.length(); i++)
{
    if (w.charAt(i)=='B'||w.charAt(i)=='b')
    {
        count++;
    }
}
System.out.println("Number of B and b: "+ count);
}
}

【问题讨论】:

  • 好了,先创建静态方法。你认为方法签名应该是什么?
  • 选择你要转成方法的表达式,在键盘上按CTRL+ALT+M提取方法(在IntelliJ上,其他IDE有不同的热键)
  • 男人。 StackOverflow 很烂。人们只是写作业,而且是免费的。

标签: java static boolean


【解决方案1】:
private static boolean hasAnyB(String str) {
   return str.contains("B") || str.contains("b");
}

【讨论】:

  • 在文本描述中用户告诉:“它还要求我使用静态方法,该方法根据字符串中是否包含任何 Bs 而返回 true 或 false,我真的不知道如何适应那个部分”。这就是发布的代码的作用。
【解决方案2】:

类似这样的:

static boolean check(String str){
    if(str.indexOf('B')>0 || str.indexOf('b')>0 )
        return true;
    else
        return false;
}

【讨论】:

  • 如果 B 是第一个/唯一的字符怎么办?你是说&gt;= 0 吗?
  • 感谢您的回答。但我忘了提到参数必须是一个字符。我正在改变一些东西,看看我能不能让它工作
【解决方案3】:

使用内置的matches() 方法,该方法使用正则表达式:

private static boolean hasB(String str) {
    return str.matches(".*[bB].*");
}

使用正则表达式是处理混合大小写问题的一种近方法。

【讨论】:

  • @PeterLawrey 是的,但是如果您阅读他遇到问题的文本是“hasB”方法:但它还要求我使用一个静态方法,该方法根据字符串是否返回 true 或 false里面有任何 Bs 我真的不知道如何适应那个部分。
【解决方案4】:

只需在 static 方法中部署所有代码即可

public static void main(String[] args) 
{
  methodOne("Pass string over here");
}

public static boolean methodOne(String s)
{
   return s.contains("B");

}

【讨论】:

    【解决方案5】:

    要获得bB 的计数,您可以这样做

    int bCount = w.replaceAll("[^Bb]", "").length();
    

    如果你必须使用 hasB 方法,你可以这样做,虽然它的效率很低并且比它需要的时间更长

    int count = 0;
    for(String ch: w.split("")) // one character at a time.
        if(hasB(ch))
           count++;
    

    【讨论】:

    • 这正是 OP 想要的 +1
    【解决方案6】:
    private static boolean hasAnyB(String str) {
      return str.toLowerCase().contains("b");
    }
    

    【讨论】:

      【解决方案7】:

      我能想到的最简单的。

      static boolean isThisB(String s, int count) {
          for(int i=0; i<s.lenght(); i++) {
              char c = s.charAt(i);
              if(c == 'b' || c == 'B')
                  count ++;
          }
      
          return count > 0;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-18
        • 2011-05-11
        • 1970-01-01
        • 2017-03-07
        相关资源
        最近更新 更多