使用.next()或.nextLine()的java字符串变量

时间:2013-11-24 22:26:16

标签: java

以下是我的源代码:

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 

我该怎么办?

1 个答案:

答案 0 :(得分:7)

您的问题是该行

option = scan.nextInt();

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

要解决此问题,您应该添加额外的

scan.nextLine()

致电nextInt()后,请使用

cname = scan.nextLine();

当你想要阅读职员的名字时。