2016-01-19 38 views
2

我一直在调试,从小时以下程序但我找不到为什么是塞纳没有采取输入字段扫描仪跳过输入?

import java.util.Scanner; 

public class Student 
{ 
int rollNo; 
String name; 
double percentageMarks; 
static Scanner input = new Scanner(System.in); 

public void accept() 
{ 
    System.out.print("Enter roll no: "); 
    rollNo = input.nextInt(); 

    System.out.print("Enter Name: "); 
    name = input.nextLine(); 

    System.out.print("Enter percentageMarks: "); 
    percentageMarks = input.nextDouble(); 
} 

public void display() 
{ 
    System.out.println("Name: " +name); 
    System.out.println("roll no: " +rollNo); 
    System.out.println("Percentage marks: " +percentageMarks); 
} 

public static void main(String[] args) 
{ 
    Student s1 = new Student(), s2 = new Student(); 

    s1.accept(); 
    s2.accept(); 

    if(s1.percentageMarks>s2.percentageMarks) 
     s1.display(); 
    else if (s2.percentageMarks>s1.percentageMarks) 
     s2.display(); 
    else 
     System.out.println("Both students has same marks"); 
} 
} 

它产生出这样的:

进入卷号:1 输入名称:输入百分比标记:

如上所示,如果没有允许输入学生姓名,它的提示输入学生百分比标记。

+2

你可以阅读这篇文章,我写了澄清你对这个问题的怀疑:[在nextLine()']之前使用'nextInt()'(https://christprogramming.wordpress.com/2014/01/30/java -common-errors-1 /) – Christian

+0

可能是扫描器将换行符(按Enter键)作为输入并跳到下一个输入行。 –

回答

3

这是因为你第一次有input.nextInt(),它完成后它不会去下一行。只需将整个第一行解析为Integer.parseInt(scanner.nextLine()),然后您就会得到您的名称输入。