Programas de práctica comunes de Java ""Escribe" cien veces, el significado será evidente"

 1. Practique la reescritura de métodos, definiciones de clases abstractas, constantes, excepciones personalizadas y llamadas.

  •  Para crear una bebida de clase abstracta de Java, debería

    a. Declare un método abstracto gusto(). Este método es responsable de generar el sabor de la bebida.
    b. Declare constantes int para representar diferentes tipos de bebidas: café, cerveza y leche.
    c. Declare el método estático getDrink(int drinkType ) para crear diferentes bebidas según los parámetros entrantes. Beber objeto y devolver el objeto. Se recomienda utilizar la instrucción switch. Este método requiere la declaración de DrinkNotFoundException, que se genera cuando no hay ningún tipo de bebida correspondiente.

  •  Crear una subclase concreta de Bebida

    a. Cree subclases de Bebida, Café que represente el café, Cerveza que represente la cerveza y Leche que represente la leche; b
    . La implementación del método sabor() requiere imprimir las características de sabor respectivas en la consola.
    Establezca una clase de prueba para probar la exactitud del contenido anterior:
    a. Escriba el método principal para pasar un determinado tipo de bebida a través de parámetros de línea de comando.
    b. Llame al método getDrink de la clase Drink en el método principal para obtener el objeto de bebida correspondiente. Tenga en cuenta que se detecta DrinkNotFoundException.
    c. Luego llame al método sabor() del objeto bebida para generar el sabor de la bebida.
    Compile el programa y ejecútelo.

  • categoría de bebida

public abstract class Drink {

    public abstract void taste();

    private static final int COFFEE=1;
    private static final int BEER=2;
    private static final int MILK=3;

    public static Drink getDrink(int drinkType) throws DrinkNotFoundException{
        switch(drinkType){
            case COFFEE:
                return new Coffee();
            case BEER:
                return new Beer();
            case MILK:
                return new Milk();
            default:
                throw new DrinkNotFoundException("Invalid drink type");
        }
    }
}

DrinkNotFoundException (clase de excepción personalizada)

public class DrinkNotFoundException extends Exception {
    public DrinkNotFoundException(String message) {
        super(message);
    }
}

clase de cafe

public class Coffee extends Drink {
    @Override
    public void taste() {
        System.out.println("咖啡的味道:苦涩");
    }
}

clase de cerveza

public class Beer extends Drink {
    @Override
    public void taste() {
        System.out.println("啤酒的味道:苦中带甜");
    }
}

tipo de leche

public class Milk extends Drink {
    @Override
    public void taste() {
        System.out.println("牛奶的味道:甜而清香");
    }
}

clase de prueba

public class Test {
    public static void main(String[] args) {
        System.out.println("数字:");
        Scanner scanner=new Scanner(System.in);
        try {
            int drinkType=scanner.nextInt();
            Drink drink = Drink.getDrink(drinkType);
            drink.taste();
        } catch (DrinkNotFoundException e) {
            System.out.println("没有相应的饮料类型");
        }
    }
}

 2. Defina la clase compleja y pruebe su funcionalidad.
    

    14.1 Un número complejo consta de dos partes, la parte real y la parte imaginaria. La definición de la clase debe contener contenido para guardar la información de estas dos partes.

    14.2 Defina un constructor en la clase para que el usuario pueda asignar un valor inicial al objeto mientras construye el objeto.

    14.3 Defina tres operadores binarios de suma, resta y multiplicación de números complejos en la clase para completar las funciones de suma, resta y multiplicación entre números complejos.
    14.4 Al sobrecargar toString, los objetos de la clase Complex pueden mostrar su propia información.  

    14.5 Complete la operación de asignación de objetos definiendo explícitamente una función miembro, permitiendo a los usuarios asignar valores a objetos de la clase Compleja.

    14.6 Escriba un programa principal (función principal) para que el usuario pueda ingresar números complejos y realizar cálculos complejos a través de este programa principal.

clase compleja

public class Complex {
    private double real;
    private double imaginary;

    public Complex(double real, double imaginary) {
        this.real = real;
        this.imaginary = imaginary;
    }
    
    public Complex add(Complex c) {
        double realSum = this.real + c.real;
        double imaginarySum = this.imaginary + c.imaginary;
        return new Complex(realSum, imaginarySum);
    }
    
    public Complex subtract(Complex c) {
        double realDiff = this.real - c.real;
        double imaginaryDiff = this.imaginary - c.imaginary;
        return new Complex(realDiff, imaginaryDiff);
    }
    
    public Complex multiply(Complex c) {
        double realProduct = this.real * c.real - this.imaginary * c.imaginary;
        double imaginaryProduct = this.real * c.imaginary + this.imaginary * c.real;
        return new Complex(realProduct, imaginaryProduct);
    }
    
    public void assign(Complex c) {
        this.real = c.real;
        this.imaginary = c.imaginary;
    }
    
    @Override
    public String toString() {
        return real + " + " + imaginary + "i";
    }
}

Clase principal

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("请输入第一个复数的实部:");
        double real1 = scanner.nextDouble();
        System.out.println("请输入第一个复数的虚部:");
        double imaginary1 = scanner.nextDouble();
        Complex complex1 = new Complex(real1, imaginary1);
        
        System.out.println("请输入第二个复数的实部:");
        double real2 = scanner.nextDouble();
        System.out.println("请输入第二个复数的虚部:");
        double imaginary2 = scanner.nextDouble();
        Complex complex2 = new Complex(real2, imaginary2);
        
        Complex sum = complex1.add(complex2);
        Complex difference = complex1.subtract(complex2);
        Complex product = complex1.multiply(complex2);
        
        System.out.println("两个复数的和为:" + sum);
        System.out.println("两个复数的差为:" + difference);
        System.out.println("两个复数的积为:" + product);
        
        scanner.close();
    }
}

3. Analice la cadena y muestre la información de los estudiantes ordenada por puntuación total.


    "Zhang San, chino 89, inglés 75# Li Si, chino 72, inglés 91# Wang Wu, chino 67, inglés 78" Pantalla:
    Nombre
        : Wang Wu, puntuación en chino: 67, puntuación en inglés 78, puntuación total: 145
        Nombre: Li Si, puntuación en chino: 72, puntuación en inglés 91, puntuación total: 163
        Nombre: Zhang San, puntuación en chino: 89, puntuación en inglés 75, puntuación total: 164

public class StudentInfo {
    public static void main(String[] args) {
        String input1 = "张三,语文89,英语75#李四,语文72,英语91#王五,语文67,英语78";
        
        // 将字符串解析为学生信息列表
        List<String> studentInfoList = Arrays.asList(input1.split("#"));
        
        // 创建学生对象数组
        Student[] students = new Student[studentInfoList.size()];

        // 解析学生信息并存储到学生对象数组中
        for (int i = 0; i < studentInfoList.size(); i++) {
            String studentInfo = studentInfoList.get(i);
            String[] infoArray = studentInfo.split(",");
            String name = infoArray[0];
            int chineseScore = Integer.parseInt(infoArray[1].substring(2));
            int englishScore = Integer.parseInt(infoArray[2].substring(2));
            int totalScore = chineseScore + englishScore;
            students[i] = new Student(name, chineseScore, englishScore, totalScore);
        }

        // 按总成绩排序
        Arrays.sort(students, Comparator.comparingInt(Student::getTotalScore));

        // 显示学生信息
        for (int i = students.length - 1; i >= 0; i--) {
            Student student = students[i];
            System.out.println("姓名:" + student.getName() + ",语文成绩:" + student.getChineseScore() +
                    ",英语成绩:" + student.getEnglishScore() + ",总成绩:" + student.getTotalScore());
        }
    }
}

class Student {
    private String name;
    private int chineseScore;
    private int englishScore;
    private int totalScore;

    public Student(String name, int chineseScore, int englishScore, int totalScore) {
        this.name = name;
        this.chineseScore = chineseScore;
        this.englishScore = englishScore;
        this.totalScore = totalScore;
    }

    public String getName() {
        return name;
    }

    public int getChineseScore() {
        return chineseScore;
    }

    public int getEnglishScore() {
        return englishScore;
    }

    public int getTotalScore() {
        return totalScore;
    }
}

4. Ingrese una cadena desde el teclado, use los métodos proporcionados por la clase de cadena para convertir letras mayúsculas en minúsculas y letras minúsculas en mayúsculas, luego intercambie los caracteres anteriores y siguientes y luego genere el resultado final.

import java.util.Scanner;

public class StringTransformation {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String input = scanner.nextLine();

        // 将大写字母转换为小写字母,小写字母转换为大写字母
        String transformed = "";
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            System.out.println(c);
            if (Character.isUpperCase(c)) {
                transformed += Character.toLowerCase(c);
            } else if (Character.isLowerCase(c)) {
                transformed += Character.toUpperCase(c);
            } else {
                transformed += c;
            }
        }

        // 将前后字符对换
        StringBuilder reversed = new StringBuilder(transformed);
        reversed.reverse();

        System.out.println("转换后的结果:" + reversed.toString());
    }
}

5. Defina una dirección de colección de big data. Bajo la dirección de big data, hay tres clases con 7, 10 y 15 estudiantes. Utilice un bucle para agregar nombres de estudiantes a cada clase, recorrer la colección de big data y mostrar los nombres de alumnos de cada clase. .

import java.util.ArrayList;
import java.util.List;


public class BigData {
    public static void main(String[] args) {
        List<List<String>> bigData = new ArrayList<>();

        // 添加三个班级
        bigData.add(new ArrayList<>());


        // 班级1
        bigData.add(new ArrayList<>()); // 班级2
        bigData.add(new ArrayList<>()); // 班级3

        // 定义每个班级的人数
        int[] classSizes = {7, 10, 15};

        // 使用循环给每个班级添加学生姓名
        for (int i = 0; i < bigData.size(); i++) {
            List<String> classStudents = bigData.get(i);
            for (int j = 1; j <= classSizes[i]; j++) {
                classStudents.add("学生" + j);
            }
        }

        // 遍历大数据集合,显示每个班级的学生姓名
        for (int i = 0; i < bigData.size(); i++) {
            List<String> classStudents = bigData.get(i);
            System.out.println("班级" + (i+1) + "的学生姓名:");
            for (String student : classStudents) {
                System.out.println(student);
            }
            System.out.println();
        }
    }
}

6. Hay una cadena "aababcabcdabcde" y se obtiene el número de apariciones de cada letra en la cadena.


        Requisitos:
                 Formato del resultado de salida: a(5)b(4)c(3)d(2)e(1); el
                 número de apariciones del carácter anterior está entre paréntesis.
        Consejo: primero use un conjunto para almacenar elementos únicos y luego compare cada elemento del conjunto con cada carácter de la cadena para contar el número de apariciones de cada carácter.

import java.util.HashMap;
import java.util.Map;

public class CharacterCount {
    public static void main(String[] args) {
        String str = "aababcabcdabcde";
        Map<Character, Integer> charCountMap = new HashMap<>();

        // 统计每个字符的出现次数
        for (char c : str.toCharArray()) {
            if (charCountMap.containsKey(c)) {
                int count = charCountMap.get(c);
                charCountMap.put(c, count + 1);
            } else {
                charCountMap.put(c, 1);
            }
        }

        // 输出结果
        StringBuilder result = new StringBuilder();
        for (Map.Entry<Character, Integer> entry : charCountMap.entrySet()) {
            result.append(entry.getKey()).append("(").append(entry.getValue()).append(")");
        }

        System.out.println(result.toString());
    }
}

7. Ingrese los nombres, puntajes en inglés, puntajes en chino y puntajes en matemáticas de 5 estudiantes en el teclado y muestre la información del estudiante de acuerdo con los siguientes requisitos. Ingrese el nombre y la calificación del estudiante desde la consola. Si la calificación es mayor que 100 o menor que 0, se generará una excepción ChengjiFeifaException para mostrar el mensaje de excepción: ¡La calificación es ilegal! Representación:
        

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class StudentInfo {
    public static void main(String[] args) {
        List<Student1> students = new ArrayList<>();

        Scanner scanner = new Scanner(System.in);

        // 录入学生信息
        for (int i = 0; i < 5; i++) {
            System.out.println("请输入第" + (i + 1) + "个学生的姓名:");
            String name = scanner.next();
            System.out.println("请输入第" + (i + 1) + "个学生的语文成绩:");
            int chineseScore = getValidScore(scanner);
            System.out.println("请输入第" + (i + 1) + "个学生的英语成绩:");
            int englishScore = getValidScore(scanner);
            System.out.println("请输入第" + (i + 1) + "个学生的数学成绩:");
            int mathScore = getValidScore(scanner);

            students.add(new Student1(name, chineseScore, englishScore, mathScore));
        }

        // 按总成绩排序
        students.sort(Comparator.comparingInt(Student1::getTotalScore).reversed());

        // 显示学生信息
        System.out.println("学生信息如下:");
        for (Student1 student : students) {
            System.out.println("姓名:" + student.getName() + ",语文成绩:" + student.getChineseScore() +
                    ",英语成绩:" + student.getEnglishScore() + ",数学成绩:" + student.getMathScore() +
                    ",总成绩:" + student.getTotalScore());
        }
    }

    private static int getValidScore(Scanner scanner) {
        int score;
        while (true) {
            score = scanner.nextInt();
            if (score < 0 || score > 100) {
                try {
                    throw new ChengjiFeifaException("成绩不合法!");
                } catch (ChengjiFeifaException e) {
                    System.out.println("异常信息:" + e.getMessage());
                }
            } else {
                break;
            }
        }
        return score;
    }
}

class Student1 {
    private String name;
    private int chineseScore;
    private int englishScore;
    private int mathScore;
    private int totalScore;

    public Student1(String name, int chineseScore, int englishScore, int mathScore) {
        this.name = name;
        this.chineseScore = chineseScore;
        this.englishScore = englishScore;
        this.mathScore = mathScore;
        this.totalScore = chineseScore + englishScore + mathScore;
    }

    public String getName() {
        return name;
    }

    public int getChineseScore() {
        return chineseScore;
    }

    public int getEnglishScore() {
        return englishScore;
    }

    public int getMathScore() {
        return mathScore;
    }

    public int getTotalScore() {
        return totalScore;
    }
}

class ChengjiFeifaException extends Exception {
    public ChengjiFeifaException(String message) {
        super(message);
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_48053866/article/details/131900496
Recomendado
Clasificación