A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马姗姗 中级黑马   /  2014-1-18 18:03  /  1463 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
import java.util.*;
import java.lang.String;
public class WordRev {   
    public static void main(String[] args){
       Stack<String> stack=new Stack<String>();
     try{
      FileReader fn1=new FileReader("File4.txt");//把一个文件按String型入栈,使里面的每一个单词倒序输入到新文件中
      BufferedReader br=new BufferedReader(fn1);
         String line=br.readLine();
         String[] str=line.split("");
         for(int i=0;i<str.length;i++){
           stack.push(str[i]);
}                                                      
      FileWriter fn2=new FileWriter("File5.txt");
      BufferedWriter bw=new BufferedWriter(fn2);
      while(!stack.isEmpty()){
       bw.write(stack.pop()+"");
       }
       br.close();
       bw.close();      
     }catch(IOException e){
      e.printStackTrace();
      }
     }
} 为什么我的程序只能使一句话倒序啊?应该怎么改?望大侠赐教!另外split的用法我不太明白~希望大侠解释下

2 个回复

倒序浏览
很明显,readLine方法只读取了一行内容,下面是具体代码:
  1. import java.io.*;
  2. import java.util.*;
  3. import java.lang.String;

  4. public class JiShuFen9 {
  5.         public static void main(String[] args) {
  6.                 Stack<String> stack = new Stack<String>();
  7.                 try {
  8.                         FileReader fn1 = new FileReader("d:\\PrintWriter.txt");// 把一个文件按String型入栈,使里面的每一个单词倒序输入到新文件中
  9.                         BufferedReader br = new BufferedReader(fn1);
  10.                         String line =null;
  11.                         while((line=br.readLine())!=null){
  12.                                 String[] str = line.split("");
  13.                                 for (int i = 0; i < str.length; i++) {
  14.                                         stack.push(str[i]);
  15.                                 }
  16.                                 
  17.                         }
  18.                         FileWriter fn2 = new FileWriter("d:\\结果.txt");
  19.                         BufferedWriter bw = new BufferedWriter(fn2);
  20.                         while (!stack.isEmpty()) {
  21.                                 bw.write(stack.pop());
  22.                         }
  23.                         br.close();
  24.                         bw.close();
  25.                 } catch (IOException e) {
  26.                         e.printStackTrace();
  27.                 }
  28.         }
  29. }
复制代码

字符串调用split方法返回的是一个String类型数组,split(regex)方法中regex是规则的意思,详情请看我的博客:http://blog.csdn.net/nerv2013/article/details/18284833
回复 使用道具 举报
首先你读取文本数据String line=br.readLine()这句话只读取了一行。应该改为
  1. String line=null
  2. while((line=br.readLine())!=null)
  3. {
  4.      String[] str=line.split("");
  5. }
复制代码
split该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马