Java печать ввода вектора и удаление вектора с конкретным номером - PullRequest
0 голосов
/ 22 октября 2019

У меня есть класс Runner, который имеет name, startnr, weight и age. Я должен быть в состоянии создать и напечатать Runner.

public class Runner {
    private String name;
    private int startnr;
    private int weight;
    private int age;

    public Runner(String name, int startnr, int weight, int age){
        this.name = name;
        this.startnr = startnr;
        this.weight = weight;
        this.age = age;
        print();
    }

    public static void main(String[] args){
        createRunner();
    }

    public void print(){
        System.out.println("Name: " + name);
        System.out.println("Startnr: " + startnr);
        System.out.println("Weight: " + weight);
        System.out.println("Age " + age);
    }

    public static void createRunner(){
        Runner One = new Runner("Two", 0,76,24);
        Runner Two = new Runner("One", 1, 80, 21);
    }
}

Тогда у меня есть класс ControlRunner, который должен позволять управлять бегунами, то есть

  • бегунов можно читать (со сканером)
  • каждый бегун получает отдельного startnr
  • бегуны должны быть внутри Vector
  • должна быть возможность распечатать всех бегунов
  • это должно быть возможноудалить бегуна с определенным startnr

Это то, что у меня есть до сих пор:

import java.util.Scanner;
import java.util.Vector;

public class ControlRunner {

    static Scanner sc = new Scanner(System.in);
    private static int startnr = 1;
    private static Vector v;
    private static String output, name;
    private static int weight, age;

    static Runner myrunner;

    public static void main(String[] args){
        createLaeufer();
    }

    public static void createLaeufer(){

        System.out.println("Write the amount of runners you want to create");

        Vector<Runner> vector = new Vector<>();

        int amount = sc.nextInt();

        for (int i = 1; i <= amount; i++) {

            System.out.println("Write the name of the runner: ");
            name = sc.next();

            System.out.println("Write the weight of the runner: ");
            weight = sc.nextInt();

            System.out.println("Write the age of the runner: ");
            age = sc.nextInt();

            myrunner = new Runner(name, startnr, weight, age);
            vector.add(myrunner);
            // v.forEach(Runner -> myrunner.print());
            startnr++;

        }

        System.out.println("Do you want to print all runners? (Y/N) ");
        output = sc.next();
        if (output.equals("Y")) {
            vector.forEach(Runner -> myrunner.print());
        } else {
            return;
        }


        System.out.println("Do you want to delete a runner? (Y/N) ");
        String delete = sc.next();
        if (delete.equals("Y")){
            System.out.print("Write the starting number: ");
            int nummer = sc.nextInt();
            vector.remove(nummer - 1);
        } else {
            return;
        }
    }
}

У меня проблема в том, что я не знаю, как напечатать всебегуны через вектор. (Прямо сейчас, это только печатает один). Другая проблема заключается в том, что он удаляется после удаления бегуна, потому что остальное просто дает return. (Я не думаю, что структура хорошая, потому что я новичок в Java). Как я могу улучшить это?

1 Ответ

0 голосов
/ 22 октября 2019

В этой части вы не используете свой вектор и просто печатаете последние данные.

System.out.println("Do you want to print all runners? (Y/N) ");
output = sc.next();
if (output.equals("Y")){
    System.out.println("Name: " + name);
    System.out.println("Startnr: enter code enter code herehere" + (startnr - 1));
    System.out.println("Weight: " + weight);
    System.out.println("Age " + age);
} else {
    return;
}

Если вы хотите распечатать всю векторную информацию, вам нужно что-то вроде этого:

v.forEach(runner -> runner.print())

Также вы создаете вектор внутри цикла, поэтому вы создаете вектор для каждого бегуна, а затем просто забываете об этом. Я думаю, вам нужно создать вектор перед циклом создания бегунов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...