//Fig.6.16: FibonacciTest.java
//Recursive fibonacci method
import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class FibonacciTest extends JApplet implements ActionListener
{
JLabel numberLabel, resultLabel, beginTimeLabel, endTimeLabel;
JTextField numberField, resultField, beginTimeField, endTimeField;

public void init()
{
Container container = getContentPane();
container.setLayout( new FlowLayout() );

numberLabel = new JLabel( "Enter an integer and press Enter" );
container.add( numberLabel );

numberField = new JTextField( 10 );
container.add( numberField );

numberField.addActionListener( this );

resultLabel = new JLabel( "Fibonacci value is" );
container.add( resultLabel );

resultField = new JTextField( 15 );
resultField.setEditable( false );
container.add( resultField );

beginTimeLabel = new JLabel( "System time at the beginning" );
container.add( beginTimeField );

endTimeLabel = new JLabel( "System time at the end" );
container.add( endTimeLabel );

beginTimeField = new JTextField( 10 );
beginTimeField.setEditable( false );
container.add( beginTimeField );

endTimeField = new JTextField( 10 );
endTimeField.setEditable( false );
container.add( endTimeField );
}

public void actionPerformed( ActionEvent actionEvent )
{
long number, fibonacciValue;
long beginTime, endTime;

beginTime = System.currentTimeMillis();
endTime = System.currentTimeMillis();

number = Long.parseLong( numberField.getText() );

showStatus( "Calculating......" );

beginTimeField.setText( Long.toString( beginTime ) );
fibonacciValue = fibonacci( number );
endTimeField.setText( Long.toString( endTime ) );

showStatus( "Done." );
resultField.setText( Long.toString( fibonacciValue ) );


}

public long fibonacci( long n )
{
if ( n == 0 || n == 1 )
return n;
    else
     return fibonacci( n - 1 ) + fibonacci( n - 2 );
}
}
问什么程序初始化不成功,主要问题应该处在返回系统时间的那部分,不过不知道哪里错了

解决方案 »

  1.   

    NullPointerExceptionbeginTimeField在初始化前就被add了
      

  2.   

    如果是这个异常NullPointerException
    你看下有没用到没赋值的对象数组元素
      

  3.   


    beginTimeLabel = new JLabel( "System time at the beginning" ); 
    container.add( beginTimeField ); //beginTimeField 在这之产助学未初始化,这里可能空指针endTimeLabel = new JLabel( "System time at the end" ); 
    container.add( endTimeLabel ); beginTimeField = new JTextField( 10 ); //这里才初始化哦
    beginTimeField.setEditable( false ); 
    container.add( beginTimeField ); 
      

  4.   

    就是一楼说的那个错误
    能不能详细一点,我还是没有明白,为什么没有初始化,resultField不也是同样的实现方式吗