我刚学习JAVA, 我写了一个小程序,如下:
import java.util.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*; 
import java.awt.event.*;
import javax.swing.*;public class HelloWorld { 
public static void main(String[] args) { 
double n;
for (int i = 1; i < 3; i++)
{
double x = 9.0;
n = x;
}
System.out.println("Hello, world!"+ n);
System.out.println("恭喜你成功运行了第一个java应用程序!"); 

} 编译时给出   错误:可能尚未初始化变量n请问是什么原因?

解决方案 »

  1.   

    public class HelloWorld {  
    public static void main(String[] args) {  
    double n = 0.0; //你把它初始化就行啦
    for (int i = 1; i < 3; i++)
    {
    double x = 9.0; 
    n = x; 
    }
    System.out.println("Hello, world!"+ n);
    System.out.println("恭喜你成功运行了第一个java应用程序!");  
    }  
      

  2.   

    double n = 0;
    给n 赋个 初值就可以了 
      

  3.   

    是因为你是在for循环中对n进行赋值的,在编译的时候没办法判定循环中的句子是否能够执行到,所以可能出现n没有初始化就使用的情况,如上所说,在定义n的时候加个初始值就好了
      

  4.   

    double没有赋值啊,随便赋个值就ok咯
      

  5.   

    给变量赋值就可以了。。还有LZ import那些都可以不要
      

  6.   

    实际上n之后是应该被赋值的,但编译器无法判断for循环内是否会执行n=x这句话,所以n需要被初始化一下
      

  7.   

    是的,如果for不能被执行,就存在了没有初始化的变量n了!
      

  8.   

    变量初始化的问题 java的基础需要打牢了
      

  9.   

    3楼老兄说的对,主要还是出在for循环上,JVM要保证变量使用前初始化,但for循环可能不执行,那么就判断n没有初始化了
      

  10.   

    楼上的大侠们都说出问题的所在了,但是我还是想提醒楼主,局部变量一定要初始化,如方法内的变量,代码块中的变量等,因为局部变量是动态的,在运行期才能确定自身的值(编译器不会默认初始化)如果不给它手动的初始化赋初值就会引发编译异常,如你所写的程序。而成员变量或者说全局变量(类的属性)会在编译期间由编译器为他们自动的进行默认的初始化,(具体的初始化时机是在类加载完成后,先初始化静态(static)变量及代码块,然后初始化非静态变量,最后是构造器)即double为0.0,int为0等。仅供参考,望楼主看看java编程思想。