JAVA aprendiendo desde cero-pre02

JAVA aprendiendo desde cero-pre02

tarea 1

Tema Descripción

Construya una clase de conjunto de libros para representar un conjunto de libros compuesto por varios libros. La clase de conjunto de libros debe contener atributos: título del libro, precio unitario (el precio unitario se refiere al precio de un solo libro en una serie) y la cantidad de libros que contienen un solo libro (estipulamos que el precio unitario de cada libro de la serie es el mismo). El programa correspondiente que debe completarse puede consultar el nombre, el precio unitario, la cantidad y el precio total de la serie de libros. Un conjunto de libros se da al principio.

7 operaciones:

tipo atributo significado producción
1/2/3 ninguno Consulta el nombre/precio unitario/cantidad de Bookset Nombre correspondiente/precio unitario/cantidad
4 name El nombre del conjunto de libros cambió aname ninguno
5 price El precio del conjunto de libros cambió aprice ninguno
6 num La cantidad del conjunto de libros cambió anum ninguno
7 ninguno Consulta el precio total de Bookset Un flotador que representa el precio total

Aviso

  • Los números de coma flotante son de doble precisión y los enteros son largos.

respuesta

Como primera pregunta, la investigación es crear una nueva clase y una clase de encapsulación. Puede ver que las primeras 6 operaciones son los setters y getters correspondientes a los 3 atributos. Esto puede generarse directa y automáticamente por pereza:

Haga clic en la variable para generar el setter y el getter Alt+Inserty haga clic en Generar.

inserte la descripción de la imagen aquí

De esta manera, se han completado las primeras 6 operaciones y se puede agregar un método para devolver el precio total.

En términos generales, no hay trampas, lo principal es estar familiarizado con la sumisión. Aquí utilizo un gadget exclusivo de Slacker (Github Desktop), clono directamente el almacén correspondiente de gitlab en el local, luego copio y pego el código (archivo .java) en la carpeta que acaba de clonar, y finalmente confirmo y presiono. (La interfaz gráfica es realmente fragante)

También está el estilo del código, puede usarlo primero para cada archivo Ctrl+Alt+L, y se ajustará automáticamente (el número de líneas y los límites de palabras deben cambiarse usted mismo), y luego use checkstyle para cambiarlo.

tarea 2

Tema Descripción

Para crear varias estanterías:

  • Cada estante puede almacenar varios juegos de libros.
  • Puede realizar las operaciones correspondientes en la serie de libros en la estantería

El funcionamiento es el siguiente:

  1. Pregunte por el precio del libro más caro en un estante
  2. Pregunte el precio total de todos los libros en una estantería determinada (tenga en cuenta que el precio total no es la suma de los precios unitarios, el precio total está relacionado con la cantidad de libros de la serie)
  3. Agregar un conjunto de libros a un estante
  4. Quitar un conjunto de libros de un estante.

Aviso

Necesita usar BigDecimal, BigInteger, preste especial atención al precio total escrito en task1 también debe reemplazarse con BigDecimal

respuesta

Cree una nueva clase Bookshelf, cree un contenedor dentro (puede usar Hashmap) para almacenar Bookset e implemente 4 métodos de operación en la clase Bookshelf. Cree otro contenedor en main para mantener Bookshelf como nuestra biblioteca.

ArrayList<Bookshelf> lib = new ArrayList<Bookshelf>();
for (int i = 0; i < n; i++) {
	Bookshelf bookshelf = new Bookshelf();
	lib.add(bookshelf);
}//别忘了初始化添加n个书架

Al consultar una determinada estantería, utilícela lib.get(i - 1)para operar en la i-ésima estantería. (Tenga en cuenta que las estanterías comienzan desde el número 1)

tarea3

Tema Descripción

  • Crea diferentes clases de series de libros. serie de libros debe
    • conforme a una cierta relación de herencia
    • Equipado con método de consulta de información.
  • Cree una clase de biblioteca unificada para administrar instancias de series de libros. La clase de estantería debe
    • Equipado con los métodos correspondientes para agregar series , eliminar series y consultar series

La serie se divide en tres categorías, Arte (texto), Ciencia (razón) y Otros. La categoría Arte se subdivide en Novela, Poesía y OtrosA. La ciencia se divide en Matemáticas, Informática y Otros.

tipo de libro Atributos tipo de atributo
Otro Igual que la clase base Bookset Igual que la clase base Bookset
OtroA Incluyendo todas las propiedades de Bookset, la edad mínima de lectura recién agregada Los atributos originales de Bookset permanecen sin cambios, la edad es un número entero
Novedoso Incluyendo todos los atributos de OtroA, la bandera de meta recién agregada La propiedad original de OtherA permanece sin cambios, finish es de tipo booleano
Poesía Incluya todos los atributos de OtroA, agregue el nuevo autor autor Los atributos originales de OtroA permanecen sin cambios y el autor es una cadena
Otros Incluyendo todas las propiedades de Bookset, año de publicación recién agregado Los atributos originales de Bookset permanecen sin cambios y el año es un número entero
Matemáticas Incluyendo todos los atributos de OtherS, grado de uso recién agregado El atributo original de OtherS permanece sin cambios y la calificación es un número entero
Computadora Incluyendo todos los atributos de OtherS, tipo profesional recién agregado Los atributos originales de OtherS permanecen sin cambios y el tipo profesional es una cadena

Las operaciones que deben implementarse son:

tipo atributo significado producción
1 i name La información de la serie del itítulo del libro en el estante con el número de consultaname Todas las propiedades de la serie, cada elemento está separado por un espacio (de acuerdo con el orden de entrada)
2 i i¿Cuántas series de libros hay en la estantería del número de consulta? un entero
3 i iEl número total de libros en el estante del número de consulta un entero
4 i type name price num var1 var2(sin nueva línea) Mueva a ila estantería No. la serie de libros cuyo tipo es type, el nombre del libro name, el precio unitario es pricey el número total es num(puede tener atributos var1, var2) ninguno
5 i name Eliminar serie titulada del inúmero de estantename Un número entero que representa el número total de libros que quedan en el estante después de ser retirados de la serie.

respuesta

  • patrón de fábrica

El uso del modo de fábrica es en realidad para encapsular la construcción de varias clases de Bookset en una nueva clase BookFactory con un interruptor, que se usa especialmente para la producción de Bookset.

public class BookFactory {
    
    
    public  static Bookset getBookset(String type, String name, double price, long num,String var1, String var2) {
    
    
        switch (type) {
    
    
            case "Other": return new Other(name,price,num);
            case "OtherA": return new OtherA(name,price,num,Integer.parseInt(var1));
            case "OtherS": return new OtherS(name,price,num,Integer.parseInt(var1));
            case "Novel":
                return new Novel(name,price,num,Integer.parseInt(var1),Boolean.parseBoolean(var2));
            case "Poetry": return new Poetry(name,price,num,Integer.parseInt(var1),var2);
            case "Math":
                return new Math(name,price,num,Integer.parseInt(var1),Integer.parseInt(var2));
            case "Computer": return new Computer(name,price,num,Integer.parseInt(var1),var2);
            default: return null;
        }
    }
}

Aquí paso directamente todos los parámetros en forma de cadenas y, después de cambiar, convierto var1 y var2 al formato requerido para diferentes conjuntos de libros.

En Main, se adopta el método de leer una línea de cadenas a la vez, y luego la línea se divide por división:

String inputtext = scanner.nextLine();
String[] values = inputtext.split(" ");//使用时直接写values[i]并转为相应的格式

Para var1 y var2, solo necesita juzgar la longitud de los valores.

  • relación de herencia

Reemplace Bookset con una clase abstracta y agregue una propiedad BookType y un método toString (esto se implementa mediante subclases)

private Booktype booktype;
public abstract String toString();

Luego Arte, Ciencia, Otros heredan Bookset; Novela, Poesía y OtrosA heredan Arte; Matemáticas, Informática y Otros heredan Ciencias. Agregue sus atributos únicos e implemente el método toString en cada subclase.

tarea4

Tema Descripción

tipo anormal producción
1 inameUn libro con título no existe en un estante no vacío ¡Oh, no! no nametenemos
1 2 3 iNo. la estantería está vacía ¡Oh, no! Esto está vacío.
4 iYa existe nameun libro con título en el estante número ¡Oh, no! El nameexistir.
5 inameEl libro con título no existe en el número de estantería mei tu wo zhen mei tu.

Aviso

El formato de entrada del tema no necesariamente tiene que ser ingresado exactamente de acuerdo con el formato, y puede haber una entrada de parámetros redundante.

respuesta

Aquí lanzo una excepción directamente (

Por ejemplo

int length = booksetlist.size();
if (length == 0) {
    
    
    throw new Exception("Oh, no! This is empty.");
}

Luego intente atrapar en main.

En segundo lugar, de acuerdo con el método de entrada de mi tarea3, no importa cuántos parámetros se ingresen más tarde, no tiene nada que ver conmigo.

tarea5

Tema Descripción

Se agregó la operación de combinación de estantería:

tipo atributo significado producción
6 i j Combinar ila estantería numerada la estantería numeradaj Un número entero que representa el número de la nueva estantería

respuesta

Agregue compareTo y clone a Bookset, e impleméntelo por subclases, como la comparación de Poesía:

@Override
public Boolean compareTo(Bookset bs) {
    
    
    if (bs.getBooktype() != this.getBooktype()) {
    
    //如果比较的Bookset类型都不一样的话肯定不是一种书
        return false;
    }
    Poetry p = (Poetry) bs;
    return super.compareTo(bs) && p.getAuthor().equals(this.author);
}

Puede fusionarlos más tarde.

Supongo que te gusta

Origin blog.csdn.net/qq_45551930/article/details/113964814
Recomendado
Clasificación