PDA

View Full Version : โปรแกรมนับจำนวนคำจาก file (Word count)



asylu3
12-08-2003, 01:40 PM
หมายเหตุสังเกตุบรรทัดที่ระบุว่า D://java_exam/test.txt ตรงนี้ให้เปลี่ยนตามตำแหน่ง file ของท่านเอง

อธิบายโค้ด
-มีการใช้ throws IOException เพราะต้องการลดความยุ่งยากของการใช้ try - catch
-countln คือนับคำตัวสุดท้ายของแต่ละบรรทัด
-count คือนับคำทั้งหมดแต่ละบรรทัดไม่รวมคำสุดท้าย
โปรแกรมสามารถนับคำที่เว้นช่องว่างมากว่า 1 ช่องได้ทั้งด้านหน้าและด้านหลัง


import java.io.*;

class WordCount
{
public static void main(String args[]) throws IOException
{


int countln=0,count=0;
String out;
FileInputStream fstream = new
FileInputStream("D://java_exam/test.txt");
DataInputStream in =new DataInputStream(fstream);

while (in.available() !=0){
out=in.readLine();
char test[]=out.toCharArray();
System.out.println (out);

for(int c=0;c<test.length;c++){

if(c<test.length-1 ){
if( test[c]!=' ' && test[c+1]==' ' ){

count++;


}

}
}


countln++;

}

in.close();
System.out.println ("Total Word="+(count+ countln));
}

}

asylu3
12-08-2003, 04:25 PM
version 2


import java.io.*;
import java.util.*;


public class Other_w_count {
public static void main (String[] args) throws IOException {
int count=0;
String out;
FileInputStream fstream = new FileInputStream("D://java_exam/test.txt");
DataInputStream in =new DataInputStream(fstream);

while (in.available() !=0){
out=in.readLine();
System.out.println(out);
StringTokenizer st = new StringTokenizer(out, " ", false);

while (st.hasMoreTokens()){
count++;
st.nextToken();
}

}
System.out.println("Total word="+(count+1));
}
}

Crovax
12-08-2003, 04:32 PM
อธิบายภาพหน่อยดิว่า
โปรแกรมที่ว่าเป็นโปรแกรมที่ไม่ได้เรียกไฟล์จากที่อื่นใช่เป่า
ถ้าใช่
แสดงว่าโปรแกรมที่ต้องการจะต้องอ่าน input จากคำสั่งของ User เพราะฉะนั้นจะต้อง count จำนวนคำที่ user input เข้ามาใช่ป่าว
ยิ่งอ่านยิ่ง งง อะ
แบบว่าไม่เข้าใจ
??? ??? ???

asylu3
14-08-2003, 09:07 PM
version 3 มี GUI

http://seri.kmutt.ac.th/cs02/citec/forum3/downloadfile.php?FileID=8


import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Wcount2 extends JFrame{

private JButton open;
private JButton cal;
private JLabel result;
private JTextArea showtext;
private JPanel bpanel;

static int count;
File testfilename;

public Wcount2()
{
super("Word Calculation");

open=new JButton("Open File");
result=new JLabel("TOTAL WORD= ");
cal=new JButton("Calculate");
showtext=new JTextArea(100,100);
Container c= getContentPane();
c.setLayout(new BorderLayout());

bpanel=new JPanel();
bpanel.add(open);
bpanel.add(cal);
bpanel.add(result);

//c.add(open,BorderLayout.NORTH);
// c.add(cal,BorderLayout.AFTER_LINE_END);
// c.add(result,BorderLayout.CENTER);

c.add(showtext,BorderLayout.CENTER);
c.add(bpanel,BorderLayout.SOUTH);

cal.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent event) {
showOut();
}

});

open.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
openFile();
}

});

setSize(400,200);
show();
}


void showOut(){

result.setText("TOTAL WORD= "+Integer.toString(count));
}

void openFile(){

JFileChooser file=new JFileChooser();
file.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result=file.showOpenDialog(this);
if (result==JFileChooser.CANCEL_OPTION)return;
testfilename=file.getSelectedFile();


System.out.println();
try {
calIt(testfilename);
} catch (FileNotFoundException e) {

e.printStackTrace();
}
}

void calIt(File in_file) throws FileNotFoundException {
count=0;//reset
showtext.setText("");
String out;
FileInputStream fstream = null;

fstream = new FileInputStream(in_file);



DataInputStream some =new DataInputStream(fstream);
System.out.println("Original Message:n");
try {
while (some.available() !=0){
out=some.readLine();
showtext.append(out+"n");
//System.out.println(out);
StringTokenizer st = new StringTokenizer(out, " ", false);

while (st.hasMoreTokens()){
count++;
st.nextToken();
}

}
fstream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//System.out.println("In calIt count:"+count);

}

public static void main (String[] args) {

Wcount2 obj=new Wcount2();

}
}