簡體   English   中英

清除緩沖區,輸出firstname,lastname

[英]Clearing the buffer, output firstname,lastname

所以我的程序有問題。 如果我刪除in.nextLine ,firstname和lastname println會一個接一個地打印,如果我有它,它將不會打印輸出中的第一個名稱,因為我認為它正在刪除它。 任何幫助將不勝感激。

import java.util.*;

public class Main
{

public static void main(String[] args)
{
    //Utilities
    Scanner in = new Scanner(System.in);

    //Variables
    int studentId = 0;
    String lastName = "";
    String firstName = "";
    String gradeLetter = "";
    String quit = "";
    double userHomeworkScore = 0.0;
    double userQuizzesScore = 0.0;
    double userMidTermScore = 0.0;
    double userFinalScore = 0.0;
    double homeworkScore = 0.0;
    double quizzesScore = 0.0;
    double midTermScore = 0.0;
    double finalScore = 0.0;
    double totalScore = 0.0;

    do {


        System.out.println("Please enter Student ID");
        studentId = in.nextInt();

        System.out.println("Please enter first name");
        firstName = in.nextLine();

        in.nextLine();

        System.out.println("Please enter last name");
        lastName = in.nextLine();

        System.out.println("Please enter score for the assignments");
        userHomeworkScore = in.nextDouble();

        System.out.println("Please enter score for the quizzes");
        userQuizzesScore = in.nextDouble();

        System.out.println("Please enter score for the midterm");
        userMidTermScore = in.nextDouble();

        System.out.println("Please enter score for the final");
        userFinalScore = in.nextDouble();

        String fullName = (firstName + "," + lastName);

        homeworkScore = (userHomeworkScore * 0.50);
        quizzesScore = (userQuizzesScore * 0.20);
        midTermScore = (userMidTermScore * 0.10);
        finalScore = (userFinalScore * 0.20);

        totalScore = (homeworkScore+quizzesScore+midTermScore+finalScore);

        if (totalScore >= 90)
        {
            gradeLetter = "A";
        }
        else if (totalScore >= 80)
        {
            gradeLetter = "B";
        }
        else if (totalScore >= 70)
        {
            gradeLetter = "C";
        }
        else if (totalScore >= 60)
        {
            gradeLetter = "D";
        }
        else
        {
            gradeLetter = "E";
        }


        //Output
        System.out.println(""+fullName+"");
        System.out.println("Student ID:" + studentId + "");
        System.out.println("Homework:" + homeworkScore + "");
        System.out.println("Quizzes:" + quizzesScore + "");
        System.out.println("Midterm:" + midTermScore + "");
        System.out.println("Final:" + finalScore + "");
        System.out.println("Total Score: " + totalScore + " Grade: " + gradeLetter + "");

        System.out.println("Press any key to enter another student or enter q to quit.");
        quit = in.nextLine();
        in.nextLine();

    }while(!quit.equalsIgnoreCase("q"));


}

}

讀取整數后需要“刷新”緩沖區。 原因是當你使用in.nextInt()時它只讀取int值並跳過“\\ n”(行尾),使用in.nextLine()會消耗“\\ n”。

用這個

 System.out.println("Please enter Student ID");
        studentId = in.nextInt();
        in.nextLine();

當然在閱讀完最后一雙

System.out.println("Please enter score for the final");
        userFinalScore = in.nextDouble();
        in.nextLine();

您不需要在兩行讀數之間“刷新”。 這是錯的:

System.out.println("Please enter first name");
    firstName = in.nextLine();

    in.nextLine();

    System.out.println("Please enter last name");
    lastName = in.nextLine();

另一種解決方案:您可以使用in.next()來讀取字符串。 in.next()從掃描程序中查找並返回下一個完整的標記。

in.nextLine()因為此方法繼續搜索輸入以查找行分隔符,所以如果不存在行分隔符,它可以緩沖搜索要跳過的行的所有輸入。

Scanner in = new Scanner(System.in);

    //Variables
    int studentId = 0;
    String lastName = "";
    String firstName = "";
    String gradeLetter = "";
    String quit = "";
    double userHomeworkScore = 0.0;
    double userQuizzesScore = 0.0;
    double userMidTermScore = 0.0;
    double userFinalScore = 0.0;
    double homeworkScore = 0.0;
    double quizzesScore = 0.0;
    double midTermScore = 0.0;
    double finalScore = 0.0;
    double totalScore = 0.0;

    do {


        System.out.println("Please enter Student ID");
        studentId = in.nextInt();

        System.out.println("Please enter first name");
        firstName = in.next();



        System.out.println("Please enter last name");
        lastName = in.next();


        System.out.println("Please enter score for the assignments");
        userHomeworkScore = in.nextDouble();

        System.out.println("Please enter score for the quizzes");
        userQuizzesScore = in.nextDouble();

        System.out.println("Please enter score for the midterm");
        userMidTermScore = in.nextDouble();

        System.out.println("Please enter score for the final");
        userFinalScore = in.nextDouble();

        String fullName = (firstName + "," + lastName);

        homeworkScore = (userHomeworkScore * 0.50);
        quizzesScore = (userQuizzesScore * 0.20);
        midTermScore = (userMidTermScore * 0.10);
        finalScore = (userFinalScore * 0.20);

        totalScore = (homeworkScore+quizzesScore+midTermScore+finalScore);

        if (totalScore >= 90)
        {
            gradeLetter = "A";
        }
        else if (totalScore >= 80)
        {
            gradeLetter = "B";
        }
        else if (totalScore >= 70)
        {
            gradeLetter = "C";
        }
        else if (totalScore >= 60)
        {
            gradeLetter = "D";
        }
        else
        {
            gradeLetter = "E";
        }



        //Output
        System.out.println(""+fullName+"");
        System.out.println("Student ID:" + studentId + "");
        System.out.println("Homework:" + homeworkScore + "");
        System.out.println("Quizzes:" + quizzesScore + "");
        System.out.println("Midterm:" + midTermScore + "");
        System.out.println("Final:" + finalScore + "");
        System.out.println("Total Score: " + totalScore + " Grade: " + gradeLetter + "");

        System.out.println("Press any key to enter another student or enter q to quit.");
        quit = in.next();

    }while(!quit.equalsIgnoreCase("q"));

輸出:

Please enter Student ID
1
Please enter first name
a
Please enter last name
b
Please enter score for the assignments
100
Please enter score for the quizzes
100
Please enter score for the midterm
100
Please enter score for the final
100
a,b
Student ID:1
Homework:50.0
Quizzes:20.0
Midterm:10.0
Final:20.0
Total Score: 100.0 Grade: A
Press any key to enter another student or enter q to quit.
q

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM