BLOG-1 前三次作業作業總結

来源:https://www.cnblogs.com/MysteriousAlter/archive/2023/10/06/17740287.html
-Advertisement-
Play Games

(1)前言:總結三次題目集的知識點、題量、難度等情況 第一次的作業基本就是熟悉一下java基本的語法,這部分Java就算需要自學也並不算難,並且本身就有了一些c語言的基礎,作業的問題主要是我們對於輸入輸出和判斷迴圈語句的使用,總體的難度很低。第二次的作業就是類的使用以及私有化和相關封裝。第三次是是除 ...


(1)前言:總結三次題目集的知識點、題量、難度等情況

  第一次的作業基本就是熟悉一下java基本的語法,這部分Java就算需要自學也並不算難,並且本身就有了一些c語言的基礎,作業的問題主要是我們對於輸入輸出和判斷迴圈語句的使用,總體的難度很低。第二次的作業就是類的使用以及私有化和相關封裝。第三次是是除了第二題都還算簡單,瞭解LocalDate類中of()、isAfter()或者isBefore()等方法的使用規則基本就能寫,第二題是目前所有題目中最難的,邏輯相對複雜,包含許多知識點,

 

(2)設計與分析:

2.1第一次作業 判斷三角形類型 輸入三角形三條邊,判斷該三角形為什麼類型的三角形。

輸入格式:

在一行中輸入三角形的三條邊的值(實型數),可以用一個或多個空格或回車分隔,其中三條邊的取值範圍均為[1,200]。

輸出格式:

(1)如果輸入數據非法,則輸出“Wrong Format”;
(2)如果輸入數據合法,但三條邊不能構成三角形,則輸出“Not a triangle”;
(3)如果輸入數據合法且能夠成等邊三角形,則輸出“Equilateral triangle”;
(3)如果輸入數據合法且能夠成等腰直角三角形,則輸出“Isosceles right-angled triangle”;
(5)如果輸入數據合法且能夠成等腰三角形,則輸出“Isosceles triangle”;
(6)如果輸入數據合法且能夠成直角三角形,則輸出“Right-angled triangle”;
(7)如果輸入數據合法且能夠成一般三角形,則輸出“General triangle”。

 

 踩坑心得

本題還是比較簡單的,遇到問題主要是無法判斷直角三角形,因為未考慮到精度問題,這裡由於double類型的數在平方後精度丟失,輸入的數據不一定為整數,程式是先四捨五入再進行勾股定理的,導致結果會有誤差判斷不相等無法判斷三角形是否為直角。

 

 

把代碼從直接用 == 判斷改為用減法和誤差進行判斷,允許部分誤差。

 

 

這題圈複雜度直接拉滿達到驚人的28,就算代碼很短現在的我去看一下也要梳理一下才能看懂,直接使用 if 堆起來還是不建議(雖然寫起來好理解),算是理解了為什麼要求圈複雜度要低了qwq。

import java.util.Scanner;


public class Main {
public static void main(String[] args) {
Scanner data = new Scanner(System.in);
Float side1, side2, side3;
side1 = data.nextFloat();
side2 = data.nextFloat();
side3 = data.nextFloat();


if(1 <= side1 && side1 <= 200 && 1 <= side2 && side2 <= 200 && 1 <= side3 && side3 <= 200){
if(side1 + side2 > side3 && side1 + side3 > side2 && side3 + side2 > side1 && side1 - side2 < side3 && side1 - side3 < side2 && side3 - side2 < side1){
if(side1.equals(side2) || side3.equals(side2) || side1.equals(side3)) {
if(side1.equals(side2) && side1.equals(side3))
System.out.println("Equilateral triangle");
else if(side1 * side1 + side2 * side2 - side3 * side3 <= 0.000001)
System.out.println("Isosceles right-angled triangle");
else if(side1 * side1 + side3 * side3 - side2 * side2<= 0.000001)
System.out.println("Isosceles right-angled triangle");
else if(side2 * side2 + side3 * side3 - side1 * side1<= 0.000001)
System.out.println("Isosceles right-angled triangle");
else
System.out.println("Isosceles triangle");
}
else if(side1 * side1 + side2 * side2 == side3 * side3 )
System.out.println("Right-angled triangle");
else if(side1 * side1 + side3 * side3 == side2 * side2)
System.out.println("Right-angled triangle");
else if(side2 * side2 + side3 * side3 == side1 * side1)
System.out.println("Right-angled triangle");
else
System.out.println("General triangle");
}
else
System.out.println("Not a triangle");
}
else
System.out.println("Wrong Format");


}
}

 

2.2.第二次作業1

成績計算-1-類、數組的基本運用

創建學生類,包含

屬性:學號(String)、姓名(String)、語文成績(int)、數學成績(int)、物理成績(int)

方法:計算總分、計算平均分

輸入5個學生的信息,將每個學生的信息封裝在一個學生對象中。

按輸入順序依次輸出5個學生的總分、平均分(精確到小數點後兩位,捨去部分按四捨五入規則計入最後一位)。

 

建一個類直接用就可以了,當時剛好學了一些私有,就用上了。

 源碼

import java.util.Scanner;

class Student{
    private String ID;
    private String Name;
    private  int MathScore;
    private  int ChineseScore;
    private  int PhysicsScore;

    public  Student(String ID,String Name,int MathScore,int ChineseScore,int PhysicsScore){
        this.Name = Name;
        this.ID = ID;
        this.MathScore = MathScore;
        this.ChineseScore = ChineseScore;
        this.PhysicsScore = PhysicsScore;
    }
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        this.Name = name;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public int getMathScore() {
        return MathScore;
    }

    public void setMathScore(int mathScore) {
        this.MathScore = mathScore;
    }

    public int getChineseScore() {
        return ChineseScore;
    }

    public void setChineseScore(int chineseScore) {
        this.ChineseScore = chineseScore;
    }

    public int getPhysicsScore() {
        return PhysicsScore;
    }

    public void setPhysicsScore(int physicsScore) {
        this.PhysicsScore = physicsScore;
    }

    public static double AVerage(int MathScore,int ChineseScore, int PhysicsScore){
        double AVerage = (MathScore + ChineseScore + PhysicsScore)*1.00 / 3;
        return AVerage;
    }
    public static int ALL(int MathScore,int ChineseScore, int PhysicsScore){
        return MathScore + ChineseScore + PhysicsScore;
    }


}

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Student[] STU = new Student[5];
        for (int i = 0; i < 5; i++) {

            String ID = in.next();
            String name = in.next();
            int MScore = in.nextInt();
            int CScore = in.nextInt();
            int PSsore = in.nextInt();
            STU[i] =  new Student(ID,name,MScore,CScore,PSsore);
        }
        for (int j = 0; j < 5; j++) {
            int all = STU[j].ALL(STU[j].getMathScore(),STU[j].getChineseScore(),STU[j].getPhysicsScore());
            double average = STU[j].AVerage(STU[j].getMathScore(),STU[j].getChineseScore(),STU[j].getPhysicsScore());
            if(j < 4)
                System.out.println(STU[j].getID() + " "+STU[j].getName() + " " +  all + " " + String.format("%.2f",average ));
            else
                System.out.print(STU[j].getID() + " "+STU[j].getName() + " " + all + " " + String.format("%.2f", average));
        }
    }
}

 

 
2.3第二次作業2 成績計算-2-關聯類 創建成績類,包含:

屬性:平時成績(int)、期末成績(int)

方法:計算總成績(計算規則:平時成績*0.4+期末成績*0.6,保留整數部分,小數部分直接丟棄)

創建學生類,包含:

屬性:學號(String)、姓名(String)、語文成績(成績類)、數學成績(成績類)、物理成績(成績類)

方法:計算總分、計算平均分

輸入3個學生的信息,將每個學生的信息封裝在一個學生對象中。

按輸入順序依次輸出3個學生的總分、平均分(精確到小數點後兩位,捨去部分按四捨五入規則計入最後一位)。

 

這題是做為上一題的升級版,增加了成績類,題目之中只要求輸出總成績和平均成績,但測試用例和最後的提交都表明瞭還需要輸出平時成績和考試成績才是正確答案。

 (偷了個懶直接未判斷成績是哪一個科目的,直接給我滿分過了 ?o?   要寫加個字元判斷應該也不難)

import java.util.Scanner;

class Scores{
    private int UsualGrades;
    private int FinalGrades;
    
    public  Scores(int UsualGrades,int FinalGrades){
        this.UsualGrades = UsualGrades;
        this.FinalGrades = FinalGrades;
    }
    public int getUsualGrades() {
        return UsualGrades;
    }

    public void setUsualGrades(int usualGrades) {
        UsualGrades = usualGrades;
    }

    public int getFinalGrades() {
        return FinalGrades;
    }

    public void setFinalGrades(int finalGrades) {
        FinalGrades = finalGrades;
    }


    public int AllGrades(int UsualGrades,int FinalGrades){
        double Allgrades = UsualGrades * 0.4 + FinalGrades * 0.6;
                return (int)Allgrades;
    }
}

class Student{
    private String ID;
    private String Name;
    private  Scores MathScore;
    private  Scores ChineseScore;
    private  Scores PhysicsScore;

    public  Student(String ID,String Name,Scores MathScore,Scores ChineseScore,Scores PhysicsScore){
        this.Name = Name;
        this.ID = ID;
        this.MathScore = MathScore;
        this.ChineseScore = ChineseScore;
        this.PhysicsScore = PhysicsScore;
    }

    public void setMathScore(Scores mathScore) {
        MathScore = mathScore;
    }

    public void setChineseScore(Scores chineseScore) {
        ChineseScore = chineseScore;
    }

    public void setPhysicsScore(Scores physicsScore) {
        PhysicsScore = physicsScore;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        this.Name = name;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public Scores getMathScore() {
        return MathScore;
    }

    public Scores getChineseScore() {
        return ChineseScore;
    }

    public Scores getPhysicsScore() {
        return PhysicsScore;
    }

    public static double AVerageAll(Scores MathScore, Scores ChineseScore, Scores PhysicsScore){
        double AVerage = (ChineseScore.AllGrades(ChineseScore.getUsualGrades(), ChineseScore.getFinalGrades()) +
                MathScore.AllGrades(MathScore.getUsualGrades(), MathScore.getFinalGrades()) +
                PhysicsScore.AllGrades(PhysicsScore.getUsualGrades(), PhysicsScore.getFinalGrades()))*1.00 / 3;
        return AVerage;
    }
    public static double AVerageusual(Scores MathScore, Scores ChineseScore, Scores PhysicsScore){
        double AVerage = (ChineseScore.getUsualGrades() + MathScore.getUsualGrades() + PhysicsScore.getUsualGrades())*1.00 / 3;
        return AVerage;
    }
    public static double AVeragefinal(Scores MathScore, Scores ChineseScore, Scores PhysicsScore){
        double AVerage = (ChineseScore.getFinalGrades() + MathScore.getFinalGrades() + PhysicsScore.getFinalGrades())*1.00 / 3;
        return AVerage;
    }
    public static int ALL(Scores MathScore,Scores ChineseScore, Scores PhysicsScore){
        return (ChineseScore.AllGrades(ChineseScore.getUsualGrades(), ChineseScore.getFinalGrades()) +
                MathScore.AllGrades(MathScore.getUsualGrades(), MathScore.getFinalGrades()) +
                PhysicsScore.AllGrades(PhysicsScore.getUsualGrades(), PhysicsScore.getFinalGrades()));
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Student[] STU = new Student[3];

        for (int i = 0; i < 3; i++) {
            String ID = in.next();
            String name = in.next();
            String subject = in.next();
            Scores MScore = new Scores(in.nextInt(),in.nextInt());
            String ID1 = in.next();
            String name1 = in.next();
            String subject1 = in.next();
            Scores CScore = new Scores(in.nextInt(),in.nextInt());
            String ID2 = in.next();
            String name2 = in.next();
            String subject2 = in.next();
            Scores PSsore = new Scores(in.nextInt(),in.nextInt());
            STU[i] =  new Student(ID,name,MScore,CScore,PSsore);
        }
        for (int j = 0; j < 3; j++) {
            int all = STU[j].ALL(STU[j].getMathScore(),STU[j].getChineseScore(),STU[j].getPhysicsScore());
            double averageall = STU[j].AVerageAll(STU[j].getMathScore(),STU[j].getChineseScore(),STU[j].getPhysicsScore());
            double averageusual = STU[j].AVerageusual(STU[j].getMathScore(),STU[j].getChineseScore(),STU[j].getPhysicsScore());
            double averagefinal = STU[j].AVeragefinal(STU[j].getMathScore(),STU[j].getChineseScore(),STU[j].getPhysicsScore());

            if(j < 2)
                System.out.println(STU[j].getID() + " "+STU[j].getName() + " " +  all + " "+ String.format("%.2f",averageusual ) +  " " +String.format("%.2f",averagefinal ) +  " " +String.format("%.2f",averageall ));
            else
                System.out.print(STU[j].getID() + " "+STU[j].getName() + " " + all + " " + String.format("%.2f",averageusual )+  " " +String.format("%.2f",averagefinal )+  " " +String.format("%.2f", averageall));
        }
    }
}

 

2.4第二次作業3 菜單計價程式-1 某飯店提供4種菜,每種菜品的基礎價格如下:

西紅柿炒蛋 15
清炒土豆絲 12
麻婆豆腐 12
油淋生菜 9

設計點菜計價程式,根據輸入的訂單,計算並輸出總價格。
訂單由一條或多條點菜記錄組成,每條記錄一行,最後以"end"結束
每條點菜記錄包含:菜名、份額兩個信息。
份額可選項包括:1、2、3,分別代表小、中、大份)

不同份額菜價的計算方法:
小份菜的價格=菜品的基礎價格。
中份菜的價格=菜品的基礎價格1.5。
小份菜的價格=菜品的基礎價格
2。
如果計算出現小數,按四捨五入的規則進行處理。

參考以下類的模板進行設計:
菜品類:對應菜譜上一道菜的信息。
Dish {
String name;//菜品名稱
int unit_price; //單價
int getPrice(int portion)//計算菜品價格的方法,輸入參數是點菜的份額(輸入數據只能是1/2/3,代表小/中/大份)
}

菜譜類:對應菜譜,包含飯店提供的所有菜的信息。
Menu {
Dish[] dishs ;//菜品數組,保存所有菜品信息
Dish searthDish(String dishName)//根據菜名在菜譜中查找菜品信息,返回Dish對象。
}

點菜記錄類:保存訂單上的一道菜品記錄
Record {
Dish d;//菜品
int portion;//份額(1/2/3代表小/中/大份)
int getPrice()//計價,計算本條記錄的價格
}

訂單類:保存用戶點的所有菜的信息。
Order {
Record[] records;//保存訂單上每一道的記錄
int getTotalPrice()//計算訂單的總價
Record addARecord(String dishName,int portion)
//添加一條菜品信息到訂單中。
}

輸入格式:

每條點菜記錄的格式:
菜名+空格(英文)+份額
註:份額可輸入(1/2/3), 1代表小份,2代表中份,3代表大份。
最後一條記錄以“end”結束。

輸出格式:

訂單上所有菜品的總價(整數數值),每份菜

如果訂單中包含不能識別的菜名,則在總價之前輸出“** does not exist”,**是不能識別的菜名

 

菜單計價程式題目的先鋒,把各個類已經告訴了要什麼內容,主要是理清楚各個類之間的關係,主函數用while持續接收,檢測到end就停止,字元串判斷本來用if條件寫了一大堆,結果效果並不好,直接是結果有誤,之後去找了一些資料寫的,像Scanner類中nextLine()等方法、String類中split()等方法、Integer類中parseInt()等其他類中的一些方法的使用經常在字元判斷中使用,調用之後也是簡潔了不少。

import java.util.*;

class Dish {
    String name;
    int unit_price;

    Dish(StrA

class Menu {
    Dish[] dishes = new Dish[4];

    Menu() {
        dishes[0] = new Dish("西紅柿炒蛋", 15);
        dishes[1] = new Dish("清炒土豆絲", 12);
        dishes[2] = new Dish("麻婆豆腐", 12);
        dishes[3] = new Dish("油淋生菜", 9);
    }

    Dish searchDish(String dishName) {
        for (Dish dish : dishes) {
            if (dish.name.equals(dishName)) {
                return dish;
            }
        }
        return null;
    }
}

class Record {
    Dish d;
    int portion;

    Record(Dish d, int portion) {
        this.d = d;
        this.portion = portion;
    }

    int getPrice() {
        return d.getPrice(portion);
    }
}

class Order {
    Record[] records = new Record[20];
    Menu menu;
    int count = 0;

    Order(Menu menu) {
        this.menu = menu;
    }

    void addARecord(String dishName, int portion) {
        Dish dish = menu.searchDish(dishName);
        if (dish != null) {
            records[count++] = new Record(dish, portion);
        } else {
            System.out.println(dishName + " does not exist");
        }
    }

    int getTotalPrice() {
        int total = 0;
        for (int i = 0; i < count; i++) {
            total += records[i].getPrice();
        }
        return total;
    }
}

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

        Order order = new Order(new Menu());

        while (true) {
            String line = in.nextLine();
            if (line.equals("end")) break;

            String[] parts = line.split(" ");
            String dishName = parts[0];
            int portion = Integer.parseInt(parts[1]);

            order.addARecord(dishName, portion);
        }

        System.out.println(order.getTotalPrice());
    }
}

 

2.5第三次作業1 課程成績統計程式-1 某高校課程從性質上分為:必修課、選修課,從考核方式上分為:考試、考察。

考試的總成績由平時成績、期末成績分別乘以權重值得出,比如平時成績權重0.3,期末成績權重0.7,總成績=平時成績*0.3+期末成績*0.7。

考察的總成績直接等於期末成績

必修課的考核方式必須為考試,選修課可以選擇考試、考察任一考核方式。

1、輸入:

包括課程、課程成績兩類信息。

課程信息包括:課程名稱、課程性質、考核方式(可選,如果性質是必修課,考核方式可以沒有)三個數據項。

課程信息格式:課程名稱+英文空格+課程性質+英文空格+考核方式

課程性質輸入項:必修、選修

考核方式輸入選項:考試、考察

課程成績信息包括:學號、姓名、課程名稱、平時成績(可選)、期末成績

課程信息格式:學號+英文空格+姓名+英文空格+課程名稱+英文空格+平時成績+英文空格+期末成績

以上信息的相關約束:

1)平時成績和期末成績的權重預設為0.3、0.7

2)成績是整數,不包含小數部分,成績的取值範圍是【0,100】

3)學號由8位數字組成

4)姓名不超過10個字元

5)課程名稱不超過10個字元

6)不特別輸入班級信息,班級號是學號的前6位。

2、輸出:

輸出包含三個部分,包括學生所有課程總成績的平均分、單門課程成績平均分、單門課程總成績平均分、班級所有課程總成績平均分。

為避免誤差,平均分的計算方法為累加所有符合條件的單個成績,最後除以總數。

1)學生課程總成績平均分按學號由低到高排序輸出

格式:學號+英文空格+姓名+英文空格+總成績平均分

如果某個學生沒有任何成績信息,輸出:學號+英文空格+姓名+英文空格+"did not take any exams"

2)單門課程成績平均分分為三個分值:平時成績平均分(可選)、期末考試平均分、總成績平均分,按課程名稱的字元順序輸出

格式:課程名稱+英文空格+平時成績平均分+英文空格+期末考試平均分+英文空格+總成績平均分

如果某門課程沒有任何成績信息,輸出:課程名稱+英文空格+"has no grades yet"

3)班級所有課程總成績平均分按班級由低到高排序輸出

格式:班級號+英文空格+總成績平均分

如果某個班級沒有任何成績信息,輸出:班級名稱+英文空格+ "has no grades yet"

異常情況:

1)如果解析某個成績信息時,課程名稱不在已輸入的課程列表中,輸出:學號+英文空格+姓名+英文空格+":"+課程名稱+英文空格+"does not exist"

2)如果解析某個成績信息時,輸入的成績數量和課程的考核方式不匹配,輸出:學號+英文空格+姓名+英文空格+": access mode mismatch"

以上兩種情況如果同時出現,按第一種情況輸出結果。

3)如果解析某個課程信息時,輸入的課程性質和課程的考核方式不匹配,輸出:課程名稱+" : course type & access mode mismatch"

4)格式錯誤以及其他信息異常如成績超出範圍等,均按格式錯誤處理,輸出"wrong format"

5)若出現重覆的課程/成績信息,只保留第一個課程信息,忽略後面輸入的。

信息約束:

1)成績平均分只取整數部分,小數部分丟棄

 

本題由於一些未知原因只能實現部分功能,這題比較複雜,需要理清清楚各個類之間的邏輯關係,

通過各個類實現對訂單總價得計算,將點菜記錄類和菜譜類設計為數組集合類型,更方便對裡面的數據進行處理。

import java.util.Scanner;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Collections;


class Course {

  String name;
  String type; 
  String mode;
  double weight;


  public Course(String name, String type, String mode) {
    this.name = name;
    this.type = type;
    this.mode = mode;
 
    if (mode.equals("考試")) {
      this.weight = 0.3;
    } else {
      this.weight = 0;
    }
  }
}


class Student {
  // 定義學生的屬性
  String id; // 學號
  String name; // 姓名
  HashMap<String, Integer> grades; // 成績表


  public Student(String id, String name) {
    this.id = id;
    this.name = name;
    this.grades = new HashMap<String, Integer>();
  }

public int getAverage(HashMap<String, Course> courses) {
    int sum = 0; // 總成績和
    int count = 0; // 總課程數
    for (String courseName : grades.keySet()) {

      if (courses.containsKey(courseName)) {
        Course course = courses.get(courseName);
        int grade = grades.get(courseName);
        sum += grade * (1 - course.weight); // 加上期末成績部分
        if (course.mode.equals("考試")) {
          sum += grade * course.weight; // 加上平時成績部分
        }
        count++;
      }
    }
    if (count == 0) { // 如果沒有任何課程,返回-1表示無效值
      return -1;
    } else { // 否則,返回總成績平均分(只取整數部分)
      return sum / count;
    }
  }
}


class Class {
  // 定義班級的屬性
  String id; // 班級號
  ArrayList<Student> students; // 學生列表


  public Class(String id) {
    this.id = id;
    this.students = new ArrayList<Student>();
  }


  public void addStudent(Student student) {
    boolean exist = false; // 標記學生是否已存在
    for (Student s : students) {
      if (s.id.equals(student.id)) { 
        exist = true;
        break;
      }
    }
    if (!exist) { // 如果不存在,添加到學生列表中
      students.add(student);
    }
  }

  
  public int getAverage(HashMap<String, Course> courses) {
    int sum = 0; // 總成績和
    int count = 0; // 總學生數(有成績的)
    for (Student student : students) {
      int average = student.getAverage(courses); // 計算每個學生的總成績平均分
      if (average != -1) {
        sum += average;
        count++;
      }
    }
    if (count == 0) { 
      return -1;
    } else { 
      return sum / count;
    }
  }
}


public class Main {
public static boolean isInteger(String s) {
    try {
      Integer.parseInt(s); // 嘗試轉換為整數
      return true; // 如果成功,返回true
    } catch (NumberFormatException e) { // 如果失敗,捕獲異常
      return false; // 返回false
    }
  }

  public static boolean isGrade(String s) {
    if (isInteger(s)) { 
      int n = Integer.parseInt(s);
      return n >= 0 && n <= 100; // 如果在0-100之間,返回true
    } else { // 否則,返回false
      return false;
    }
  }

  public static boolean isStudentId(String s) {
    if (s.length() == 8 && isInteger(s)) { // 如果長度為8且是整數,返回true
      return true;
    } else { // 否則,返回false
      return false;
    }
  }


  public static boolean isName(String s) {
    if (s.length() <= 10) { // 如果長度不超過10,返回true
      return true;
    } else { // 否則,返回false
      return false;
    }
  }


  public static boolean isCourseName(String s) {
    if (s.length() <= 10) { 
      return true;
    } else { 
      return false;
    }
  }


  public static boolean isCourseType(String s) {
    if (s.equals("必修") || s.equals("選修")) { 
      return true;
    } else { // 否則,返回false
      return false;
    }
  }


  public static boolean isAccessMode(String s) {
    if (s.equals("考試") || s.equals("考察")) {
      return true;
    } else { 
      return false;
    }
  }


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

    HashMap<String, Course> courses = new HashMap<String, Course>();
    HashMap<String, Student> students = new HashMap<String, Student>
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 痞子衡嵌入式半月刊: 第 82 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回顧 ...
  • 前言 ClickHouse 是一款開源的分散式列式資料庫管理系統,專門設計用於高性能的大數據分析和查詢。 目前項目中用到的一個場景是將mongo的數據同步到clickhouse,使用clickhouse做報表,後續也將分享同步和使用方案 使用 Docker Compose 部署單機版,小項目和自己測 ...
  • 1 主從讀寫分離 大部分互聯網業務都是讀多寫少,因此優先考慮DB如何支撐更高查詢數,首先就需要區分讀、寫流量,這才方便針對讀流量單獨擴展,即主從讀寫分離。 若前端流量突增導致從庫負載過高,DBA會優先做個從庫擴容上去,這樣對DB的讀流量就會落到多個從庫,每個從庫的負載就降了下來,然後開發再儘力將流量 ...
  • 在上圖中我們想在點擊bi-pen的時候獲取到td綁定的id,常用 這是一種常見的方式來訪問一個元素的祖父節點。這種寫法在簡單的情況下是有效的,但在某些情況下可能不夠靈活或可維護。所以我們考慮使用 closest 方法: Element.closest() 方法允許你查找最接近當前元素的祖先元素,滿足 ...
  • 原理比較簡單就不上圖片了 你也許聽說過在行元素中使用vertical-align: middle; 可以實現居中對其,但實際使用上,常常沒有作用。 其實行元素有四條線分別是: 頂線 中線 基線 底線 預設行元素是基線對齊的(兩個元素的基線在同一高度) 下麵代碼相當於圖片的基線和文字的中線對齊(圖片的 ...
  • 10 月 5 日 - 6 日,ViteConf 2023 線上舉行,Vue 和 Vite 的創建者尤雨溪發表了題為《The State of Vite》 的演講,他分享了 Vite 的現狀與未來展望,本文就來看一看 Vite 現在怎麼樣了,以及未來的路將怎麼走! Vite 版本發佈情況 首先,來快速 ...
  • 元組用於在單個變數中存儲多個項目。 mytuple = ("apple", "banana", "cherry") 元組是 Python 中的 4 種內置數據類型之一,用於存儲數據集合,另外還有列表、集合和字典,它們都具有不同的特性和用途。元組是有序且不可更改的集合。元組使用圓括弧表示。 示例,創建 ...
  • 二:Java 基礎知識 一、標識符和關鍵字 1. 標識符 1. 在java語言中,用來標誌類名、對象名、變數名、方法名、類型名、數組名、包名的有效字元序列,稱為“標識符”; 2. 標識符由字母、數字、下劃線、美元符號組成,且第一個字元不能是數字; 3. java語言區分大小寫; 4. 標誌符命名規則 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...