我正在尝试确定使用for循环提供的输入中是否有数字。我一直试图这么做,甚至在谷歌的第二页搜索。我决定寻求帮助。这是我到目前为止所尝试的内容:
for (c = 0 ; c < 6 ; c = c++)
{
c = input.charAt (0);
if (Character.isDigit (c))
{
System.out.println ("Input must only contain letters.");
return;
}
}
基本上我正在尝试扫描任何字母,如果它们是字母或数字,则单独测试它们,这是我遇到的麻烦,因为只扫描了第一个字母。我也尝试在循环中键入“c ++”。我该如何扫描每一个字母?
编辑:糟糕,这是一个错误。我将它更改为c = c + 1,但它不起作用,我将其更改回c ++,但结果为c = c ++。
答案 0 :(得分:3)
这一行:c = input.charAt(0);
有两个问题。
首先,您可能不想在每次循环执行时重置迭代值c
。所以也许可以将其更改为不同的变量,如下所示:
char chr = input.charAt(....
其次,您只抓取第一个char
,因为您向.charAt()
函数发送了0。试试这个:
char chr = input.charAt(c);
if (Character.isDigit (chr))
{
System.out.println ("Input must only contain letters.");
return;
}
答案 1 :(得分:2)
使用正则表达式和Java的Pattern类:
boolean b = Pattern.matches("[0-9]+", input);
如果您不熟悉正则表达式,[0-9] +将在字符串中找到0到9之间任何数字的一个或多个匹配项(“+”运算符)。然后你需要做的就是检查变量b是否为真(表示搜索找到了数字)或者是否为假(字符串中没有数字)。
另外,我注意到你正在以下列方式递增你的循环变量c:
c = c++
此操作实际上对c的值没有影响。在赋值语句中的变量之后的++运算符意味着“在之后将变量的值递增一个,将其当前值分配给另一个变量。然后发生的事情是您将c的值赋给这个递增的值永远不会保存回c,所以你的循环可能会无限延续。增加循环变量的正确方法如下:
for (c = 0; c < 6; c++) {
// ...
}
答案 2 :(得分:0)
您不能同时使用c
作为索引和值。试试这个:
for (int i = 0; i < 6; i++) {
c = input.charAt(i);
// ...
}
答案 3 :(得分:0)
我创建了这个布尔函数检查是否有帮助。
public static boolean containtsDigits(String input) {
boolean isDigit = false;
if(input != null && !input.isEmpty()){
char[] letterCharArray = input.toCharArray();
for(int i = 0 ; i < letterCharArray.length ; i++){
if(Character.isDigit(letterCharArray[i])){
isDigit = true;
break;
}
}
}
return isDigit;
}
答案 4 :(得分:0)
试试这个:
public void check(String word){
int n=word.length(); // To Find length of the string.
for(int c=0;c<n;c++ ){
char ch=word.charAt(c); // for extracting every single element of word
if(Character.isDigit(ch)) // To check if its Digit
{
System.out.println ("Input must only contain letters.");
break;
}
}
System.out.println ("All Good");
}