我编写了一个程序,它以String
作为用户输入并显示字母,数字和white-spaces
的计数。我使用Tokenizer
- 类编写了代码,它计算字母和数字,但它省略了white-spaces
。有什么想法吗?
import java.util.Scanner;
public class line {
public static void main(String[] args) {
System.out.println("Enter anything you want.");
String text;
int let = 0;
int dig = 0;
int space= 0;
Scanner sc = new Scanner(System.in);
text = sc.next();
char[]arr=text.toCharArray();
for(int i=0;i<text.length();i++) {
if (Character.isDigit(arr[i])) {
dig++;
} else if (Character.isLetter(arr[i])) {
let++;
} else if (Character.isWhitespace(arr[i])) {
space++;
}
}
System.out.println("Number of Letters : "+let);
System.out.println("Number of Digits : "+dig);
System.out.println("Number of Whitespaces : "+space);
}
}
答案 0 :(得分:2)
Scanner
默认情况下将输入分为令牌,使用空格作为分隔符!
简单地说,它吞噬了所有的空白!
您可以使用sc.useDelimiter(/*ToDo - suitable character here - a semicolon perhaps*/)
将分隔符更改为其他内容。
答案 1 :(得分:1)
你有问题
sc.next();
除此之外,请使用
sc.nextLine();
它应该有用。
答案 2 :(得分:0)
而不是text = sc.next();
使用text = sc.nextLine();
答案 3 :(得分:0)
尝试使用
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Line {
public static void main(String[] args) throws Exception {
String s;
System.out.println("Enter anything you want.");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
s = br.readLine();
int length = s.length();
int letters = 0;
int numbers = 0;
int spaces = 0;
for (int i = 0; i < length; i++) {
char ch;
ch = s.charAt(i);
if (Character.isLetter(ch)) {
letters++;
} else {
if (Character.isDigit(ch)) {
numbers++;
} else {
if (Character.isWhitespace(ch)) {
spaces++;
} else
continue;
}
}
}
System.out.println("Number of letters::" + letters);
System.out.println("Number of digits::" + numbers);
System.out.println("Number of white spaces:::" + spaces);
}
}