2 qq 24351647 qq_24351647 于 2016.02.29 10:47 提问

Java文本无限增加,死循环的问题?

import java.io.*;
import java.util.regex.*;
/*
代码功能为实现将网页中的用户名及其发表内容摘取出来
*/
public class fileReader {

public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new FileReader("d:/tiezi.txt"));
//tiezi.txt为待处理网页源码
BufferedWriter bw =
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:/repalce"),"utf-8"));
//将替换后的源码存入repalce.txt
String line = null;
while((line=br.readLine())!=null){
while(line.contains("<img username=\"")){//用户名开始字符
//标识符<img username="与标识符" class="" src="http中间为用户名
String username = line.substring(line.indexOf("<img username=\""), line.indexOf("\" class=\"\" src=\"http"));
bw.append(username);
bw.append('#');

}
while(line.contains("class=\"d_post_content j_d_post_content clearfix\">")){
//标识符class="d_post_content j_d_post_content clearfix">与标识符
中间为用户发表内容
String usertext = line.substring(line.indexOf("class=\"d_post_content j_d_post_content clearfix\">"), line.indexOf("
"));
bw.append(usertext);
bw.newLine();
//问题:运行程序后出现文本大小一直在增加,多到15G,直至死机
}
}
bw.flush();
bw.close();
br.close();
}
}

2个回答

u013596119
u013596119   Rxr 2016.02.29 10:55

while(line.contains(" //标识符 bw.append(username);
bw.append('#');
}
while(line.contains("class=\"d_post_content j_d_post_content clearfix\">")){
//标识符class="d_post_content j_d_post_content clearfix">与标识符
中间为用户发表内容
String usertext = line.substring(line.indexOf("class=\"d_post_content j_d_post_content clearfix\">"), line.indexOf("
"));

这两个while是死循环吧??为何不直接用if??不知道我有没有理解错代码。。。

qq_24351647
qq_24351647 噢,是吗,我改改试一下,谢谢~
2 年多之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.29 11:05

外层用while循环读取数据是正确的,内层判断是否包含某个特定字符,应该是条件判断用if才对吧。否则内层循环体没有终止条件,当然是死循环了啊。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
HashMap多线程下发生死循环的原因
概述 大神陈皓已经在疫苗:JAVA HASHMAP的死循环一文中详细描述了HashMap多线程下产生死循环的原因,我仔细研读了这篇大作,做了一些笔记,加上自己的一些理解 整理出一些信息,发出来与大家交流交流。 HashMap存储的数据结构 陈皓在Hash表数据结构这一节提到了HashMap的数据结构以及扩容问题,关于这一点我之前写过的 HashMap的put和get方法原理和HashMap扩
死循环与无限递归
<br />普通的死循环,如while(1)之类,会造成程序无响应,CPU占用100%(单核CPU)。若在这个死循环中申请了内存资源而未释放,会造成更 严重的后果-内存耗尽。在双核CPU电脑上测试,CPU占用为100%。在多线程编程中,若存在多个(大于2个)线程死循环,则CPU占用一样为 100%。<br /> 无限递归将造成程序崩溃,调试状态下报错为:Stack overflow。<br /><br /><br /><br /><br />源:http://www.huubby6.tk/2009/1
解决spring mvc JSON 无限死循环
解决spring mvc中jason无限死循环的方案
Java并发之不可思议的死循环
下面的代码将发生死循环:package com.zzj.concurrency; public class VolatileObjectTest implements Runnable{ private ObjectA objectA; // 加上volatile 就可以正常结束While循环了 public VolatileObjectTest(ObjectA a) {
Think in Java反刍笔记(6)---HashMap的工作原理-hashcode和equals原理的再次深入
HashMap的工作原理-hashcode和equals原理的再次深入
一个简单的死循环事例
一个简单的死循环,初学者可以借鉴一下,还凑合。
EasyUi的树状结构无限死循环的解决办法
EasyuI的tree树状结构无限死循环  如图一直循环1和2 得不到1和2的内容 遇到这个问题首先要看自己数据库 id,text,state,这几个属性是不可更改的,如果不同需要改过来先来看看数据库 然后再看看dao层查询数据库jsp页面 如果上面的都对 看看你action里面 有没有接收jsp页面的id id有没有getset方法action上面的id是固定的不能更改,下面是api总结一下今天
死循环 for (;;) 的运用
-
java基础_day0008_循环_for_无限循环
Scanner scanner = new Scanner(System.in); int i=scanner.nextInt(); java键盘输入整形数字 package day02; import java.util.Scanner; public class TestXunHuan { public static void main(String[] arg
通过while实现程序的无限循环
shi'x