新人提问,一个简单的问题
import java.util.*;
public class lianxi{
  public static void main(String[] args){
String name;
Scanner input=new Scanner(System.in);
     do{
  System.out.println("输入姓名");
       name=input.next();
     }while(!name.equals("q"));
     System.out.println("程序结束");
     
  }
}
这个程序就能输出,点q就程序结束
但我不太明白,我把第四行的String name放到第八行的name=input.next()中,变成String name=input.next(); 结果运行时就报错,说什么name can not be resovled,请问这是为什么(难道我还必须要先用独立一行代码去声名name吗?后来我把String name变成随便一个“int 变量” 也是不行,报同样的错)

解决方案 »

  1.   

    局部变量的作用范围
    String name = input.next();
    再while(!name.equals("q"))
    它就不认得了,就这样
      

  2.   

    Java和c&c++不同    在声明时   你首先要给他new一个空间   或是聚集的初始化    拿一个数组做例子吧:
    int aa=new int();
    int aa=8;
    像int aa;这样就不对了
      

  3.   

    1楼正解,搂主的代码中第四行和第八行属于不同的作用范围,所以你更改以后编译器会报错,其实就相当于你没有对while循环中的name做初始化。
      

  4.   

    那就是说我只能像这样去写?String name; 
    name=input.next(); 
    原因是由于下面的这句话?
    while(!name.equals("q")) 
      

  5.   

    import java.util.*; 
    public class lianxi{ 
      public static void main(String[] args){ 
    String name; 
    Scanner input=new Scanner(System.in); 
        do{ 
      System.out.println("输入姓名"); 
       name=input.next(); 
          System.out.println("输出姓名");
          System.out.println(name);
          System.exit(0);
        }while(!name.equals("q")); //这里有用到name,所以不能在第八行用String name=input.next();来代替第四行
        System.out.println("程序结束"); 
        
      } 
    }    我帮你改了一下,自己看看。
      

  6.   


    点q就结束了do...while循环了因为!name.equals("q")条件为假了。
    所以就结束了。
      

  7.   

    把第四行的String name放到第八行的name=input.next()中,name就变成局部变量了
    当运行while(!name.equals("q")); 就会报错name can not be resovled(name没有定义)。