java编程关于character的小问题

ltai701 2009-06-24 01:14:57
麻烦各位高手帮忙设计这样的一个java程序,要求如下:
从一个文本框读取输入的内容,并统计其单词的数量,并作简单输出。
初学者无知,望高手不啬赐教
...全文
80 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yy357510564 2009-08-18
  • 打赏
  • 举报
回复
学习了2个方法 嘿嘿
tazerkinq 2009-08-18
  • 打赏
  • 举报
回复
正则表达式是一个好选择
ltai701 2009-06-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ltai701 的回复:]
引用 4 楼 wibnmo 的回复:
楼主说详细些。
比如说iloveChinaforever,这就不好统计。
是以空格作为分隔符么?
若以空格分隔那就好办了。

还有,adkkljd 算不算单词,还是英文中合法的单词,如果是那就更不好办了。



不好意思,我这儿所指的单词是指以空格作为分隔符的,比如"iloveChinaforever"当然不算单词,"adkkljk"也不算单词,在此特指英文单词。感谢4楼的朋友热心回答,感谢各位热心朋友的回答,多谢。
[/Quote]


不好意思,说错了,"iloveChinaforever"应当当一个单词,"adkkljk"也算一个单词。
dellxia 2009-06-25
  • 打赏
  • 举报
回复

import java.util.regex.*;
import javax.swing.JOptionPane;

public class WordCounter {
private static Pattern pat;
private static Matcher mat;
private static String matcher="thie Is a F5t fo jl'rw java,0%cover \n \t 个t fgt";
public static void main(String[] args){
// matcher=JOptionPane.showInputDialog("输入:");
String patern1="[A-z]+";
int count=0;
pat=Pattern.compile(patern1);
mat=pat.matcher(matcher);
while(mat.find()){count++;
System.out.print(mat.group()+" ");
}
System.out.println("\n"+count);
}
}

thie Is a F t fo jl rw java cover t fgt
12
过滤数字、汉字、空格、符号 \n \t 等
Adebayor 2009-06-24
  • 打赏
  • 举报
回复
帮顶
ltai701 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wibnmo 的回复:]
楼主说详细些。
比如说iloveChinaforever,这就不好统计。
是以空格作为分隔符么?
若以空格分隔那就好办了。

还有,adkkljd 算不算单词,还是英文中合法的单词,如果是那就更不好办了。
[/Quote]

不好意思,我这儿所指的单词是指以空格作为分隔符的,比如"iloveChinaforever"当然不算单词,"adkkljk"也不算单词,在此特指英文单词。感谢4楼的朋友热心回答,感谢各位热心朋友的回答,多谢。
wibnmo 2009-06-24
  • 打赏
  • 举报
回复
如果只是单词那就好办了:用一个StringTokenizer就可以了。

import java.util.*;

public class Test {

public static void main(String[] args) {
System.out.println("input your character:");
Scanner sc = new Scanner(System.in);
String str;
str = sc.nextLine();
StringTokenizer st = new StringTokenizer(str);
int num = st.countTokens();
String temp = null;
while(st.hasMoreTokens()) {
temp = st.nextToken();
System.out.println(temp);
}
System.out.println(num + " words!");
}
}
NickCheng 2009-06-24
  • 打赏
  • 举报
回复
顶5楼的!……
xnjnmn 2009-06-24
  • 打赏
  • 举报
回复
//根据空格分
public static String[] getString(String s) {

String[] start = s.split("\\p{Space}");

return start;
}
LZ自己可以根据需要选择:
\p{Punct} 表示标点符号:!"#$%&'()*+,-./:; <=>?@[\]^_`{|}~
\p{Lower} 小写字母字符:[a-z]
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]

\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六进制数字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r]
wibnmo 2009-06-24
  • 打赏
  • 举报
回复
楼主说详细些。
比如说iloveChinaforever,这就不好统计。
是以空格作为分隔符么?
若以空格分隔那就好办了。

还有,adkkljd 算不算单词,还是英文中合法的单词,如果是那就更不好办了。

johnston678 2009-06-24
  • 打赏
  • 举报
回复
单词数不太好区别,
单词之间还是/t,/n,/r之类的分隔!
不过可以单个字符判断,
johnston678 2009-06-24
  • 打赏
  • 举报
回复
下面是这写的相关代码,LZ可以参考下:

/**
* 读取输入的内容,并统计其单词的数量,并作简单输出.注意是以空格来统计单词数的。已经实现过滤空格,/n,/t
*/
package com.java.basic.exercise.ch2;

import java.util.Scanner;

/**
* @author johnston
*
* @version 2009-06-24
*/
public class CountWordNumber {

/**
* 从前台读取字符串,以"#"为结束标识
* @return
*/
public String readString() {
Scanner scanner = new Scanner(System.in);
System.out.println("Input content:");
StringBuffer sb = new StringBuffer();
String inputString;
do {
inputString = scanner.nextLine();
if (inputString.endsWith("#")) {
inputString = inputString.replace("#", "");
sb.append(inputString);
break;
}
sb.append(inputString + '\n');

//printString(sb.toString());
} while (true);
scanner.close();
return sb.toString();
}

/**
* 统计inputString字符串的单词数
* @param inputString
* @return
*/
public int countWords(String inputString) {
int wordCount = 0;
char[] charArray = inputString.toCharArray();
for (int i=0; i<charArray.length; i++) {
if (i==0) {
if (charArray[i] != ' ' && charArray[i] != '\n' && charArray[i] != '\t') { //如果第一个单词不是以空格,/n,/t开头的,wordCount自增
wordCount ++;
}
} else if ((charArray[i-1]==' ' || charArray[i-1] == '\n' || charArray[i] == '\t')&& (charArray[i] != ' ' && charArray[i] != '\n' && charArray[i] != '\t')) { //如果前面是空格,/n,/t,下一个字符不是空格/t,/n,wordCount自增
wordCount ++;
}
}

return wordCount;
}

/**
* 打印inputString
* @param inputString
*/
public void printString(String inputString) {
System.out.println(inputString);
}
/**
* @param args
*/
public static void main(String[] args) {
CountWordNumber countWordNumber = new CountWordNumber();
String inputString = countWordNumber.readString();
System.out.println("output content:");
countWordNumber.printString(inputString);
int countWords = countWordNumber.countWords(inputString);
System.out.println("Words counts:" + countWords);
}

}


运行结果:
Input content:
tt ttt
ttt


ttt
#
output content:
tt ttt
ttt


ttt

Words counts:4
knightzhuwei 2009-06-24
  • 打赏
  • 举报
回复
这个跟character有啥关系?我还以为是包装类呢。。
awusoft 2009-06-24
  • 打赏
  • 举报
回复
不是太明白单词数,以什么来分单词呢?空格吗?如果是空格,那么通过输入框得到String后,使用split(" ");来分开,得到一个String数组,就是单词了吧.,如果两个空格连在一起怎么办?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧