Java疑惑

YangTian1158 2009-11-15 11:19:09
请看如下程序

public class Test3
{
public static void main(String[] args)
{
int x=10;
if(x>10)
{
int y;
y=3;
System.out.println("y="+y);

}
System.out.println("x="+x);

}
为什么只输出x=10,而y不输出?????
...全文
95 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzz_robinson 2009-11-16
  • 打赏
  • 举报
回复
路过。
YangTian1158 2009-11-15
  • 打赏
  • 举报
回复
有啊!!!!
public class Test
{
public static void main(String[] args)
{
int x=10;
if(x <100)
{
int y;
y=x;
System.out.println("x="+x);
System.out.println("y="+y);
}
System.out.println("y="+y);

}
}
该程序是无法编译的!会提示找不到符号y!!
再将程序改一下
public class Test12
{
public static void main(String[] args)
{
int x=10;
if(x <100)
{
int y;
y=x;
System.out.println("x="+x);
System.out.println("y="+y);
}
}
}
编译可以通过,却抛出了异常!!
我想说明的是作用域的问题,变量y的作用域只在if块中,所以在mian方法中是不能访问的!!
苍蝇①号 2009-11-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yangtian1158 的回复:]
这个问题看似很愚蠢,但是如果你将程序改一下
public class Test
{
  public static void main(String[] args)
  {
  int x=10;
  if(x <100)
  {
    int y;
    y=x;
      System.out.println("x="+x);
      System.out.println("y="+y);
  }
    System.out.println("y="+y);

  }
}
结果呢???
[/Quote]
算我愚蠢,这有什么高明在里面吗
苍蝇①号 2009-11-15
  • 打赏
  • 举报
回复
看错了 把if看成for去了
苍蝇①号 2009-11-15
  • 打赏
  • 举报
回复
楼是的要构造死循环也没有必要这么麻烦啊
YangTian1158 2009-11-15
  • 打赏
  • 举报
回复
这个问题看似很愚蠢,但是如果你将程序改一下
public class Test
{
public static void main(String[] args)
{
int x=10;
if(x<100)
{
int y;
y=x;
System.out.println("x="+x);
System.out.println("y="+y);
}
System.out.println("y="+y);

}
}
结果呢???
  • 打赏
  • 举报
回复
。。。
苍蝇①号 2009-11-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 magicelfzz 的回复:]
因为x=10,不满足x>10的条件,所以直接跳过if语句。。。。。
[/Quote]
楼上正解。现在的人这问题都贴出来了
magicelfzz 2009-11-15
  • 打赏
  • 举报
回复
因为x=10,不满足x>10的条件,所以直接跳过if语句。。。。。
scarjia 2009-11-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yangtian1158 的回复:]
有啊!!!!
public class Test
{
  public static void main(String[] args)
  {
  int x=10;
  if(x <100)
  {
    int y;
    y=x;
      System.out.println("x="+x);
      System.out.println("y="+y);
  }
   System.out.println("y="+y);

  }
  }
该程序是无法编译的!会提示找不到符号y!!
再将程序改一下
public class Test12
{
  public static void main(String[] args)
  {
  int x=10;
  if(x <100)
  {
    int y;
    y=x;
      System.out.println("x="+x);
      System.out.println("y="+y);
  }     
  }
  }
编译可以通过,却抛出了异常!!
我想说明的是作用域的问题,变量y的作用域只在if块中,所以在mian方法中是不能访问的!!

[/Quote]

不会出现异常啊!!!
结果是X=10 Y=10啊,不知楼主是怎么搞的
爱欣果 2009-11-15
  • 打赏
  • 举报
回复
因为x=10,不满足x>10的条件,所以直接跳过if语句。。。。。
fang2015 2009-11-15
  • 打赏
  • 举报
回复
因为10不大于10
Steve 2009-11-15
  • 打赏
  • 举报
回复
编译可以通过,却抛出了异常!!
你改完以后都在if域里,没有抛出异常.
howardhewang 2009-11-15
  • 打赏
  • 举报
回复
这问题太不值得探讨了
sunyuhua8899 2009-11-15
  • 打赏
  • 举报
回复
果然是牛人
小杜666 2009-11-15
  • 打赏
  • 举报
回复
应该会报错吧,y的作用域只在if内有效

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧