2013-11-24 42 views
0

下面是我的源代码:的java字符串变量)或.nextLine()

package functiontest; 

import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.Scanner; 

public class FunctionTest { 

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    int option; 
    String cname, cpassword="testpassword",chp="010-000000"; 

//  cname="clerk test"; 

    System.out.println("1. add"); 
    System.out.println("2. delete"); 
    option = scan.nextInt(); 
    switch(option) 
    { 
     case 1: 
      System.out.print("Enter clerk name:\t"); 
      cname = scan.nextLine(); 
      File cfile = new File("clerk/"+cname+".txt"); 
       FileWriter cwrite; 
       try 
       { 
        cwrite = new FileWriter(cfile); 
        BufferedWriter cbuf = new BufferedWriter(cwrite); 
        cbuf.write("clerk name:\t" +cname); 
        cbuf.write("clerk password:\t"+cpassword); 
        cbuf.write("clerk handphone number:\t"+chp); 
        cbuf.flush(); 
        cbuf.close(); 
        System.out.println("The clerk profile create completely"); 
       }catch(IOException e) 
       { 
        System.out.println("Error! clerk profile cannot create"); 
       } 
      ;break; 
     case 2: 
      String dclerk; 
//    dclerk = "clerk test"; 
       System.out.print("\nPlease enter clerk name for delete:\t"); 
       dclerk = scan.next(); 
       File dcfile = new File("clerk/"+dclerk+".txt"); 
       if(!dcfile.exists()) 
       { 
        System.out.println("Error! the clerk profile not exist"); 
       } 
       try 
       { 
        dcfile.delete(); 
        System.out.println(dclerk + "'s prifle successful delete"); 
       }catch(Exception e) 
       { 
        System.out.println("Something wrong! " + dclerk +" profile cannot delete"); 
        };break; 
     } 
    } 
} 

我不能输入变量名CNAME

 cname = scan.nextLine() 

当我运行程序它显示如下结果:

run: 
1. add 
2. delete 
1 
Enter clerk name: The clerk profile create completely 

当我使用.next():

cname = scan.next() 

它无法读取

cname 

与空间,例如

clerk test 

它只会读取

clerk 

应该怎么办?

回答

6

你的问题是该行

option = scan.nextInt(); 

不读整后的新行字符。因此,稍后在做nextLine()时,最后会读取新行。

为了解决这个问题,你应该调用nextInt()后添加一个额外的

scan.nextLine() 

,然后用

cname = scan.nextLine(); 

当你想阅读店员的名字。

+0

@DavidWallance非常感谢你解决我的问题,我可以添加和删除 – wesleylim1993