用JAVA编程读取TXT文件中的数字(非常多)并画坐标图,为什么画不出?

我写的代码如下:importjava.io.*;importjava.awt.*;importjavax.swing.*;publicclasspainting{publ... 我写的代码如下:
import java.io.*;
import java.awt.*;
import javax.swing.*;
public class painting{
public static void main(String args[]){

JFrame paint=new JFrame();
MyPanel mp=new MyPanel();
paint.add(mp);
paint.setSize(1200, 720);
paint.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
paint.setVisible(true);

}
}

class MyPanel extends JPanel {
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
g2.translate(0,500 );
g2.scale(1.0, -1.0);
double[]a2=new double[20000];
ji jki=new ji();
a2=jki.jij();
int a;
for(a=0;a<=10000;a++){
g2.drawOval((int)(a2[a]), (int)(a2[a+1]), 1, 1);

}
}
}
class readandpaint {
double t[]=new double[20000];
double[] read1(){

try {

FileReader in=new FileReader("D://2.txt");
BufferedReader in1=new BufferedReader(in);
String s=null;
int i;
for(i=0;i<=10000;i++){
while((in1.readLine())!=null){
s=in1.readLine();
String[]ae=s.split(" ");
t[i]=Double.parseDouble(ae[0]);
t[i+1]=Double.parseDouble(ae[1]);
}
}

}
catch (IOException e) {
}
return t;
}
}
class ji{
double u[]=new double[20000];
double[] jij(){
readandpaint diao=new readandpaint();
u=diao.read1();
return u;

}
}

到底有什么问题啊,运行的时候只有几个点而已~
本人JAVA菜鸟啊,请高手们不吝赐教!
展开
 我来答
llei32wang
2013-01-20 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1405万
展开全部
for(i=0;i<=10000;i++){ //这个循环没有作用 循环第二次的时候 就不再循环了。in1.readLine()在for循环第二次 即i=1以后始终为null
while((in1.readLine())!=null){
s=in1.readLine();
String[]ae=s.split(" ");
t[i]=Double.parseDouble(ae[0]); //这样写有问题的下一次循环时是会覆盖 t[i]会覆盖这次的t[i+1]
t[i+1]=Double.parseDouble(ae[1]);
}
}
这样写就行了
while((in1.readLine())!=null){
s=in1.readLine();
String[]ae=s.split(" ");
t[i]=Double.parseDouble(ae[0]);
t[i+1]=Double.parseDouble(ae[1]);
i+=2;
}
}

class ji{
double u[]=new double[20000]; //要它没用的 会白白占用内存
double[] jij(){
readandpaint diao=new readandpaint();
u=diao.read1();
return u;
}
改成
class ji{
double[] jij(){
readandpaint diao=new readandpaint();
double u[]=diao.read1();
return u;
}
追问
还是有问题啊,我随便写了个小点的TXT文件放D盘,把代码像你说的改了而且数字改小后指向了这个TXT文件如下
100 70
200 23
300 90
700 98
86 780
23 230
本来应该有6个点结果只有5个,然后TXT里有些数字改正后图居然没变化!
你可以在D盘像我上面一样建一个TXT文件然后调试看看~万谢!
追答
代码这样就没什么问题了,你说少一个点是少了86 780这个,因为平移的y只有500而画图的y确有780导致画到图片区域以外了。注意y只能在0-720之间超过的是画不出来的。
import java.io.*;
import java.awt.*;
import javax.swing.*;
public class painting{
public static void main(String args[]){
JFrame paint=new JFrame();
MyPanel mp=new MyPanel();
paint.add(mp);
paint.setSize(1200, 720);
paint.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
paint.setVisible(true);
}
}
class MyPanel extends JPanel {
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
g2.translate(0,720);
g2.scale(1.0, -1.0);
g2.setColor(Color.red);
ji jki=new ji();
double[] a2=jki.jij();
for(int a=0;a1){
t[i]=Double.parseDouble(ae[0]);
t[i+1]=Double.parseDouble(ae[1]);
i+=2;
}
}
}catch (IOException e) {
}finally{
if(in!=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fr!=null){
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}
return t;
}
}
class ji{
double[] jij(){
readandpaint diao=new readandpaint();
double u[]=diao.read1();
return u;
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式