使用 .next() 或 .nextLine() 的 java 字符串变量
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20181887/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java string variable using .next() or .nextLine()
提问by wesleylim1993
the following is my sources code:
以下是我的源代码:
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;
}
}
}
i cannot the enter the variable name cname
我不能输入变量名 cname
cname = scan.nextLine()
when i run the program it show the result as below:
当我运行程序时,它显示的结果如下:
run:
1. add
2. delete
1
Enter clerk name: The clerk profile create completely
when i use .next():
当我使用 .next():
cname = scan.next()
it cannot read the
它无法读取
cname
with spaces, example
带空格,示例
clerk test
it will read
它会读
clerk
only how should i do?
只是我该怎么办?
回答by Dawood ibn Kareem
Your problem is that the line
你的问题是这条线
option = scan.nextInt();
does not read the new line character after the integer. So that new line is finally read when you do nextLine()
, later on.
不读取整数后的换行符。因此,当您这样做时nextLine()
,最终会读取该新行,稍后。
To fix this, you should add an extra
要解决此问题,您应该添加一个额外的
scan.nextLine()
after the call to nextInt()
, then use
调用后nextInt()
,然后使用
cname = scan.nextLine();
when you want to read the clerk's name.
当你想读店员的名字时。