import java.applet.Applet;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Label;
import java.awt.TextField;public class SeparateNum extends Applet{
Label lab; //定义一个标签
TextField tf; //定义一个文本
long a[];//用于存在拆分的数字
int i=0;

public void init(){  //初始方法
lab=new Label("输入一个人人任意长度的整数");
tf=new TextField(19);

add(lab);  //添加一个
add(tf); //再来一个
}

public boolean action(Event e,Object o){  //事件监听器

if(e.target==tf){
long num=Integer.parseInt(tf.getText()); //取出写入的数字 while(num>0){
a[i]=num%10;
num=num/10;
i++;
}
}
repaint();
return true; }

public void paint(Graphics g){
int x=25,y=25;
    for(int j=i-1;j>=0;j--){
g.drawString(a[j]+"", x, y);
x+=10;
}
} }以上是我的一个拆数字程序,就是不知道错哪,哪位帮下忙,谢谢了

解决方案 »

  1.   

    你应该把 x设为 全局变量!!
    你那x  每次都被重新赋值为25   x+10不起作用  
      

  2.   


    import java.applet.Applet;
    import java.awt.Event;
    import java.awt.Graphics;
    import java.awt.Label;
    import java.awt.TextField;public class SeparateNum extends Applet {
    Label lab; //定义一个标签
    TextField tf; //定义一个文本
    long a[];//用于存在拆分的数字
    int i=0;

    public void init() {  //初始方法
    lab=new Label("输入一个人人任意长度的整数");
    tf=new TextField(19);
    add(lab);  //添加一个
    add(tf);    //再来一个    
    }

        public boolean action(Event e,Object o) {  //事件监听器
    if(e.target==tf) {
    long num=Integer.parseInt(tf.getText()); //取出写入的数字
    i = 0;//care
    a = new long[tf.getText().trim().length()];//care
    while(num>0) {
    a[i]=num%10;
    num=num/10;
    i++;
    }
    }
    repaint();        
    return true;
    }

        public void paint(Graphics g) {
    int x=25,y=25;
    for(int j=i-1;j>=0;j--) {
    g.drawString(a[j]+"", x, y);
    x+=10;
    }
    }
    }报空指针异常了
    数组a没初始化
    按你的意思 i应该每次执行完后应该重新赋0 要不可能会有数组越界的异常
      

  3.   

    long a[] 问题。 赋值,长度问题。参考下面的写法。
    package com.jwh.cn;
    import java.applet.Applet;
    import java.awt.Event;
    import java.awt.Graphics;
    import java.awt.Label;
    import java.awt.TextField;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class SeperateNum extends Applet{
        Label lab; //定义一个标签
        TextField tf; //定义一个文本
        List list = new ArrayList();//用于存在拆分的数字
        int i=0;
        
        public void init(){  //初始方法
            lab=new Label("输入一个人人任意长度的整数");
            tf=new TextField(19);
            
            add(lab);  //添加一个
            add(tf);    //再来一个    
        }
            
        public boolean action(Event e,Object o){  //事件监听器
        
            if(e.target==tf){
                long num=Long.parseLong(tf.getText()); //取出写入的数字
                System.out.println(num);
                while(num>0){
                    list.add(num%10);
                    num=num/10;
                    i++;
                }
            }
            repaint();        
            return true;    }
        
        public void paint(Graphics g){
            int x=25,y=25;
            for (Iterator iterator = list.iterator(); iterator.hasNext();) {
    long type = (Long) iterator.next();

                g.drawString(type+"", x, y);
                x+=10;
            }   
        }
    }