-2
package findingthehighestscore;
import java.util.Scanner;

public class FindingTheHighestScore
{

public static void main(String[] args)
{
    Scanner kybd = new Scanner(System.in);
    // store students names  
    String student1;
    String student2;
    String student3;
    String tempStudent;

    // store students scores
    double score1;
    double score2;
    double score3;
    double tempScore;

    //Prompt user for input of each student and their score
    System.out.println("Please enter the name of Student 1");
    student1 = kybd.nextLine();

    System.out.println("Please enter the score of student 1");
    score1 = kybd.nextByte();

    System.out.println("Please enter the name of Student 2");
    student2 = kybd.nextLine();

    System.out.println("Please enter the score of student 2");
    score2 = kybd.nextByte();

    System.out.println("Please enter the name of Student 3");
    student3 = kybd.nextLine();

    System.out.println("Please enter the score of student 3");
    score3 = kybd.nextByte();

    //if score2 is greater then score1 then swap scores. Score 1 will be printed as highest score
    if(score2 > score1)
    {
       tempScore = score1;      
       score1 = score2;
       score2 = tempScore;           
       tempStudent = student1;           
       student1 = student2;          
       student2 = tempStudent;          
    }

     //if score3 is greater then score1 then swap scores.
    if(score3 > score1)
    {
       tempScore = score1;
       score1 = score3;          
       score3 = tempScore;           
       tempStudent = student1;           
       student1 = student3;           
       student3 = tempStudent;           
    }        
    System.out.print(student1 + " has the highest score of " + score1);       
}

}

4

1 に答える 1

3

交換 :-

student1 = kybd.nextLine();

と: -

student1 = kybd.next();

nextLine()メソッドは、現在の入力の最後で改行文字を読み取りません。したがって、次のscanner.nextByte()呼び出しで改行を読み取るために残されます。これは、バイトではなく改行を読み取ります。

したがって、基本的に次の行をスキップし(前の入力から左の改行を読み取るため)、次の行の後にカーソルを進めます。したがって、nextByte()メソッドはスキップされます。

したがって、改行を読み取るには、next()メソッドを使用できます。このように、次の反復で読み取るものは何も残されません。

于 2012-10-03T20:00:41.167 に答える