我无法将用户输入的字符串转换为字符数组。每当我将字符串转换为char数组时,它仅显示第一个单词。当我用一些文本初始化String时,此代码成功运行,但我使用扫描仪进行输入,此代码不起作用。基本上我想从用户输入中计算字母,字符,空格和其他字符。
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
System.out.println("Enter the string");
String s=scan.next();
count(s);
}
public static void count(String x)
{
int letter=0,digit=0,spaces=0,other=0;
char[] c=x.toCharArray();
for(int i=0;i<x.length();i++)
{
if(Character.isLetter(c[i]))
{
letter ++;
}
else if(Character.isDigit(c[i]))
{
digit ++;
}
else if(Character.isSpaceChar(c[i]))
{
spaces ++;
}
else
{
other ++;
}
}
System.out.println(" the total letter is "+ letter);
System.out.println(" the total digits is "+ digit);
System.out.println(" the total spaces is "+ spaces);
System.out.println("other is "+ other);
}
}
答案 0 :(得分:0)
如果您要查找字母和数字等的计数,则不必将字符串转换为字符数组。您只需在遍历输入字符串时将输入字符串的每个字符转换为字符。下面,我将重写您的 count 函数:
public static void count(String x)
{
int letter=0,digit=0,spaces=0,other=0;
for(int i=0;i<x.length();i++)
{
if(Character.isLetter(x.charAt(i)))
{
letter ++;
}
else if(Character.isDigit(x.charAt(i)))
{
digit ++;
}
else if(Character.isSpaceChar(c[i]))
{
spaces ++;
}
else
{
other ++;
}
}
System.out.println(" the total letter is "+ letter);
System.out.println(" the total digits is "+ digit);
System.out.println(" the total spaces is "+ spaces);
System.out.println("other is "+ other);
}
答案 1 :(得分:0)
您的代码存在问题,因为Scanner
类标记了用户输入的内容-因此,使用scanner.next()
您只会将文本放在第一个空白处。请尝试使用System.console().readLine()
:
String s = System.console().readLine()
count(s);
答案 2 :(得分:0)
您必须使用String s = scan.nextLine();不是String s = scan.next();