2016-05-24 56 views
0

我是一个新的java程序员,在我下面的代码中,当我尝试输入像john smith这样的员工姓名时,只有john被输出打印出来。 如果我把使用扫描器类的输入

System.out.print("Enter Employee Name: "); 
String employeeName = s.next(); 

上述

System.out.print("Enter SEX: ");  
char SEX = s.next().charAt(0); 

这段代码输出不是要求我employeename值。并直接打印剩余的值。

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
**package cs480; 
import java.util.Scanner; 
public class CS480D1_Richa_2_Week2 { 
    public static void main(String [] args){ 
    Scanner s=new Scanner(System.in); 
    System.out.print("Ente Employee ID: "); 
    int employeeId = s.nextInt(); 
    System.out.print("Ente SEX: ");  
    char SEX = s.next().charAt(0); 
    System.out.print("Ente Employee Name: "); 
    String employeeName = s.next(); 
    System.out.println("Employee ID is " +employeeId); 
    System.out.println("Employee Name is " +employeeName); 
    System.out.println("Employee gender is " +SEX); 
    }   

}** 
+1

检查右侧的'Related'部分的分隔符。你会得到你的答案 –

回答

0

请尝试使用此:

public static void main(String[] args) { 

    Scanner s = new Scanner(System.in); 
    System.out.print("Ente Employee ID: "); 
    int employeeId = s.nextInt(); 
    System.out.print("Ente SEX: "); 
    char SEX = s.next().charAt(0); 
    System.out.print("Ente Employee Name: "); 
    String employeeName = s.nextLine(); 
    employeeName = s.nextLine();// Try to add this line of code 
    System.out.println("Employee ID is " + employeeId); 
    System.out.println("Employee Name is " + employeeName); 
    System.out.println("Employee gender is " + SEX); 

} 
+0

嗨埃里卡,谢谢你现在它按预期工作。当我只使用String employeeName = s.nextLine();它没有工作。你为什么添加该行? – Learn

+0

这意味着char SEX = s.next()。charAt(0);命令只读取char值。所以在这一行之后,我们需要读取s.nextLine();执行'\ n'输入键。在那之后employeeName = s.nextLine();此代码读取employeeName的用户输入。所以你也可以写这样的代码来清除它:s.nextLine(); String employeeName = s.nextLine(); –

0

尝试更换代码

字符串employeeName = scanner.nextLine();

代替

字符串employeeName = scanner.next();

next()只能读取输入直到空格。它不能读取由空格分隔的两个单词。另外,next()在读取输入后将光标放在同一行中。

nextLine()读取包含单词之间空格的输入(即,它读取直到行\ n结尾)。一旦输入被读取,nextLine()将光标定位在下一行。

0

要么你可以使用

scanner.nextLine() 

或覆盖分隔符使用next()的

scanner.useDelimiter("\n"); 
scanner.next(); 
0

Scanner.next()使用白色空间分隔符(占用空白之前的元素)。

因此,无论使用

Scanner.nextLine() 

或重置使用

Scanner s = new Scanner(input).useDelimiter("\\s*"your delimiter"\\s*");