当前位置: 首页 > 知识库问答 >
问题:

检查字符串是否只包含数字,然后仅在字符串不包含数字以外的字符时进行设置

叶冥夜
2023-03-14
/**
 * Set the person's mobile phone number
 */
public void setMobile(String mobile) {
    for (int i = 0; i < mobile.length(); i++) {
if (!Character.isDigit(mobile.charAt(i))) {}
}
this.mobile = mobile;
}

所以我基本上需要确保字符串只包含数字,如果它包含非数字的方法,就什么也不做。我的问题是,如果一个数字串中有一个随机字符,即“0343A45645”,它仍然会设置方法。感谢您的帮助,谢谢!

共有3个答案

卫英悟
2023-03-14

添加一个布尔字母

然后在你的for循环中

无论何时找到一封信,请使用else语句将letterFound设置为true

然后立即停止循环i=mobile。length()在您的else语句中

濮彬
2023-03-14

你有两个问题:

第一:如果if条件为false,则没有退出循环

第二:为什么要使用循环来实现这样的tryParse

boolean tryParseInt(String value) {  
     try {  
         Integer.parseInt(value);  
         return true;  
      } catch (NumberFormatException e) {  
         return false;  
      }  
}

if(tryParseInt(mobile)){
  this.mobile = mobile;
}
汝开畅
2023-03-14

您可以使用String.matches(String regex):

boolean onlyDigits = mobile.matches("[0-9]+");

有了for循环,当找到一个非数字时,你可以直接中断。

boolean onlyDigits = true;
for (int i = 0; i < mobile.length(); i++) {
    if (!Character.isDigit(mobile.charAt(i))) {
        onlyDigits = false;
        break;
   }
}

你也可以直接返回,而不是打破循环。听上去你不想再发生什么事了。这样就不需要从onlyDigits变量开始。

请注意,如果mobile。length()==0那么就上述for循环而言,数字仍然是true。因此,假设onlyDigits应为false如果mobile为空字符串,则可以将其初始化为:

boolean onlyDigits = !mobile.isEmpty()

检查后,您可以分配它,如果onlyDigitstrue

if (onlyDigits)
    this.mobile = mobile;
 类似资料:
  • 问题内容: 我想检查a是否仅包含数字。我用这个: 但意识到它也允许和。基本上,我要确保只能包含数字,而不能包含其他字符。由于和都是数字,所以不是正确的方法。也许我需要一个正则表达式?有小费吗? 问题答案: 怎么样

  • 我有这三个字符串: 我如何检查这些字符串中哪一个只包含字母还是只包含数字(用R表示)? 只能在字母检查中为TRUE 它对很有效,但对也很有效,这是我不想要的。 提前谢了。

  • 我能够通过使用下面这个问题的注释提供的代码来解决这个问题。所有其他帖子都是有效的! 我使用的有用的东西来自第一个评论。虽然提供的所有示例代码似乎也是有效的!

  • 问题内容: 我发现的大多数问题都偏向于他们正在寻找数字中的字母这一事实,而我正在寻找我想成为无数字符串的数字。我需要输入一个字符串,并检查它是否包含任何数字以及是否确实拒绝它。 仅当所有字符均为数字时,该函数才返回。我只想看看用户是否输入了一个数字,例如“我拥有一只狗”之类的句子。 有任何想法吗? 问题答案: 你可以像这样使用函数和函数 另外,你可以使用正则表达式,如下所示

  • 问题内容: 我正在编写一个程序,其中用户以以下格式输入字符串: 我需要检查字符串中是否有数字 然后只提取数字。 如果我使用或,则无论输入的内容是什么,程序都无法在字符串中找到数字,但是仅在只有数字的情况下才能使用。 我可以使用什么作为查找和提取的解决方案? 问题答案: 我使用的解决方案如下所示: 我确信这不是一个完美的解决方案,但它满足了我的需求。谢谢大家的帮助。:)

  • 使用。但仍不确定为什么上面的方法不起作用。 不管怎样,多亏了之前有人建议这个答案。:)