亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何防止用戶兩次輸入相同的文本

如何防止用戶兩次輸入相同的文本

紅顏莎娜 2022-09-28 10:07:15
該程序基本上通過讓用戶輸入課程數量和課程代碼來計算gpa,并帶有相關的學分和分數。如果課程代碼輸入兩次,將顯示一條消息(課程已注冊),并且它將一直循環,直到用戶使用不同的課程代碼輸入所有課程我創建了兩種方法。一個用于檢查代碼是否已注冊,另一個用于計算gpa,這是檢查用戶輸入的第一種方法,我不確定。因為如果我輸入課程代碼兩次,它只會顯示消息,并允許我計算其余部分public static boolean checkCourse(String[] courseList, String code){    boolean check = false;    for(int i=0 ; i < courseList.length; i++){        if(code.equals(courseList[i]))             check = true;        else            check = false;     }     return check;}public static double gradeValue(double marks){     double grade = 1.0;     if(marks >=95){ grade = 5.0;}     else if (marks >= 90) { grade = 4.75;}     else if (marks>=85) { grade = 4.5;}     else if (marks >= 80) { grade = 4.0;}     else if (marks >= 75) { grade = 3.5; }     else if (marks >= 70) { grade = 3.0;}     else if (marks >= 65) {grade = 2.5 ;}     else if (marks >= 60) { grade = 2;}     else if (marks < 60) { grade =1 ;}      return grade;}public static void main(String[] args) {    Scanner input = new Scanner(System.in);    System.out.print("Enter number of courses: ");    int n = input.nextInt();    String[] Courses = new String[n];    int sumOfcreadit=0;    int sumOfmarks =0;    for(int i =0; i<Courses.length;i++){        System.out.print("Enter a course code: ");        Courses[i] = input.next();        if(checkCourse(Courses,Courses[i])){            System.out.println("the course already registered");            i--;        }        System.out.print("Enter a credit: ");        int credit = input.nextInt();        System.out.print(" Enter a marks: ");        int marks = input.nextInt();        sumOfcreadit += credit;        sumOfmarks +=marks * credit;    }     double TotalMarks;    TotalMarks = sumOfmarks /sumOfcreadit;    System.out.println("The GPA is: "+gradeValue(TotalMarks));}
查看完整描述

2 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

我對您的代碼進行了一些更改,現在它工作正常。下面的代碼中描述了更改。有3個重要的變化。我試圖盡可能少地進行更改,以使代碼按預期工作


public static boolean checkCourse(String[] courseList, String code) {

    boolean check = false;

    for (int i = 0; i < courseList.length; i++) {

        if (code.equals(courseList[i])) {  // equals instead of == to compare strings

            check = true;

            break; // you have to break loop if it is true because else statement before returned false even if there was the same course code due to null values in next array elements which was not filled yet

        }


    }

    return check;

}


public static double gradeValue(double marks) {

    double grade = 1.0;

    if (marks >= 95) {

        grade = 5.0;

    } else if (marks >= 90) {

        grade = 4.75;

    } else if (marks >= 85) {

        grade = 4.5;

    } else if (marks >= 80) {

        grade = 4.0;

    } else if (marks >= 75) {

        grade = 3.5;

    } else if (marks >= 70) {

        grade = 3.0;

    } else if (marks >= 65) {

        grade = 2.5;

    } else if (marks >= 60) {

        grade = 2;

    } else if (marks < 60) {

        grade = 1;

    }

    return grade;

}


public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.print("Enter number of courses: ");

    int n = input.nextInt();

    String[] Courses = new String[n];

    int sumOfcreadit = 0;

    int sumOfmarks = 0;


    for (int i = 0; i < Courses.length; i++) {

        System.out.print("Enter a course code: ");

        String code = input.next();

        if (checkCourse(Courses, code)){

            System.out.println("the course already regestered ");

            i--;

            continue; // continue is neccessary to let user write value again if it already exists

        }

        Courses[i] = code;

        System.out.print("Enter a credit: ");

        int credit = input.nextInt();

        System.out.print(" Enter a marks: ");

        int marks = input.nextInt();


        sumOfcreadit += credit;

        sumOfmarks += marks * credit;


    }

    double TotalMarks;

    TotalMarks = sumOfmarks / sumOfcreadit;


    System.out.println("The GPA is: " + gradeValue(TotalMarks));


}


查看完整回答
反對 回復 2022-09-28
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

使用一套結構來存儲所有訪問過的課程代碼,這將避免對課程數組進行不必要的迭代


此方法可以增強為


public static boolean checkCourse(HashSet<String> courses, String code){

     boolean check = false;

     if(courses.contains(code)){

         check = true;

     else

         check = false;

     }

     return check;

}

初始化哈希集課程,如果 checkCourses 方法返回 false,請在課程中添加課程代碼。


像這樣在循環之前初始化


 HashSet<String> courseSet = new HashSet<String>();

您的 if 條件內循環


 if(checkCourse(courseSet,courses[i])){ // check for variable name , name should always start with lower case letter

    System.out.println("the course already regestered ");

    i--;

    // You can use continue if you don't want processing for it

    // it will skip the loop iteration and it will go next iteration

}else{

    courseSet.add(courses[i]);

}


查看完整回答
反對 回復 2022-09-28
  • 2 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號