注册 登录
编程论坛 JAVA论坛

新手不懂 为什么这个是错的!

djl320124 发布于 2016-06-01 13:33, 2629 次点击
import java.util.Scanner;

class LianDemo1212 {
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        
        System.out.println("请输入一个数据");
        int x=sc.nextInt();
        int y;
        
        if(x>=3){
            y=x*2+1;
        }else if(-1<=x&&x<3){
            y=x*2;
        }else if(x<=-1){
            y=x*2-1;
        }
        System.out.println("y:"+y);//[b]显示这一行 可能尚未初始化变量y
    }
}
6 回复
#2
hhwz2016-06-01 14:35
int y = 0;
#3
zzjvslove2016-06-01 15:05
你在main函数体内的变量属于局部变量,变量都要赋初始值。
如上面的int y ; 要修改成 int y = 0 ;  (并且要习惯加空格)。

还有类名class LianDemo1212、此要和文件名一致。
意思就是说,如果你的文件的名称是LianDemo1212.java的话、
你的类名  class LianDemo1212   这一句要改成  public class LianDemo1212
#4
郑家兴2016-06-02 22:20
把y赋值0就行了。
#5
TsugumiYuu2016-06-05 09:49
其实根本问题还是在于初始化未赋值,还有个比较重要的原因就是你觉得你考虑了y的所有情况,但其实if语句其实可以不走的,意思就是你
int y;
然后System.out这样就会出现编译错误
#6
机智羊2016-06-06 00:17
在方法中,你声明的变量在后续使用中,你一定要先给这个变量赋予一个初值,就做初始化,在这里你一开始没有给y赋初值,那么程序在计算y时,都不知道你y一开始是什么,这个该在,算呢。   就好像我问你 x + z 等于多少,你不会算,如果我告诉你 x = 1,z = 2,你就可以算了。
#7
hykj94952016-06-09 11:56
学习了,各位的语言表达能力比我好
1