麻烦各位高手帮忙设计这样的一个java程序,要求如下:
从一个文本框读取输入的内容,并统计其单词的数量,并作简单输出。
初学者无知,望高手不啬赐教

解决方案 »

  1.   

    不是太明白单词数,以什么来分单词呢?空格吗?如果是空格,那么通过输入框得到String后,使用split(" ");来分开,得到一个String数组,就是单词了吧.,如果两个空格连在一起怎么办?
      

  2.   

    这个跟character有啥关系?我还以为是包装类呢。。
      

  3.   

    单词数不太好区别,
    单词之间还是/t,/n,/r之类的分隔!
    不过可以单个字符判断,
      

  4.   

    楼主说详细些。
    比如说iloveChinaforever,这就不好统计。
    是以空格作为分隔符么?
    若以空格分隔那就好办了。还有,adkkljd 算不算单词,还是英文中合法的单词,如果是那就更不好办了。
      

  5.   

    //根据空格分
    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] 
      

  6.   

    如果只是单词那就好办了:用一个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!");
    }
    }
      

  7.   

    下面是这写的相关代码,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
      

  8.   


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

  9.   

     不好意思,说错了,"iloveChinaforever"应当当一个单词,"adkkljk"也算一个单词。
      

  10.   


    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 等