public class hellow
{
public static void main(String args[])
    {
   int a=5;
   for(int b=0; b<a;b++)
{
    for(int c=b;c<a;c++){
   System.out.print(" ");

}
for(int c=0;c<=b;c++)
{
System.out.print("* ");

}
    System.out.println();
   }

}
}
public class hellow
{
int c=0;
int c=1;
 System.out.print(c);}
请教下上面为什么能两次定义int  c   下面就提示错误;

解决方案 »

  1.   

    下面这样定义了,如果用到变量c, 是用哪个? 没办法区分。所以规范规定不允许。
    上面的两个c, 定义在不同的代买块里,第一个循环里定义了一个变量c, 它只在这个循环里起作用,出了这个循环,这个变量就没有了。第二个循环也一样。举个(可能不太恰当)例子,一列火车有13节车厢,编号可从1到13,试想一下你把两节车厢都编成1号,其他的11节从2编到12,那在这列火车上怎么区分个1号车厢到底是哪个? 所以显然不能这样编号。
    但两列不同的火车就可以都编1号车,去广州的火车1号车厢和去哈尔滨的火车的1号车厢,完全能区分开。
      

  2.   

    上面两个c的作用域不相同 ,一个作用域是在循环内,一个是在循环外,也就是说 在循环外面输出的是5 ,里面输出就是循环的那个c
    而下面的两个c的作用域相同,你输出的时候你不知道输出的是哪个,系统也不会知道,自然报错 ,
    不能定义两个相同的变量的前提条件是作用域相同 
    作用域不同 ,随意你定义,互不影响,例如每个函数中都可以有int i ;
    至于作用域的作用范围自己去看书吧。基础中的基础