I'm a new programmer,
I'm terribly sorry for the walls of code, but I simply can't find the error.
I am tring to create an arrayList that stores input values, but everytime I create the 2nd instance, the first instance gets overwritten. It does print two instances, but both instances have the same value.
Main block: The problem area is at the bottom of this code, "switch sc1" and "switch s2, case 2"
package com.company;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
public class Main {
    public static void main(String[] args) throws FileNotFoundException {
        User user = new User(null, null, null, null, null);
        Login login = new Login(null, null, null, null, null);
        Stream stream = new Stream(null, null, null, null, 0, null, null);
        List list = new List(null, null, null, null, 0, null, null);
        ArrayList<Stream> joinableList = new ArrayList<Stream>();
        ArrayList<Stream> completedList = new ArrayList<Stream>();
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM-yyyy HH:mm");
        boolean showRoom = false;
        while (showRoom == false) {
        System.out.println("\nWelcome to ShowRoom\n\nPress 1 to login\nPress 2 to create a user\n");
        Scanner choice1 = new Scanner(System.in);
        System.out.print("Input: ");
        int s1 = choice1.nextInt();
        switch (s1) {
            case 1:
                System.out.print("\nEnter Username: ");
                Scanner scanUsername = new Scanner(System.in);
                String username = scanUsername.nextLine();
                user.setUsername(username);
                System.out.print("\nEnter Password: ");
                Scanner scanPassword = new Scanner(System.in);
                String password = scanPassword.nextLine();
                user.setPassword(password);
                login.verifyLogin(username, password);
                break;
            case 2:
                System.out.print("\nChoose Username: ");
                Scanner scanChooseUsername = new Scanner(System.in);
                username = scanChooseUsername.nextLine();
                user.setUsername(username);
                user.saveUsername();
                System.out.print("\nChoose Password: ");
                Scanner scanChoosePassword = new Scanner(System.in);
                password = scanChoosePassword.nextLine();
                user.setPassword(password);
                user.savePassword();
                break;
            }
            boolean loggedIn = false;
            while (loggedIn == false) {
                System.out.println("\nWelcome to your dashboard " + user.username + "\n\nPress 1 to create a stream\nPress 2 to view joinable streams\nPress 3 to view completed streams");
                Scanner choice2 = new Scanner(System.in);
                System.out.print("\nInput: ");
                int s2 = choice2.nextInt();
                switch (s2) {
                    case 1:
                        String listUsername = user.username;
                        stream.setListUsername(user.username);
                        Scanner chooseTitle = new Scanner(System.in);
                        System.out.print("\nChoose title: ");
                        String title = chooseTitle.nextLine();
                        stream.setTitle(title);
                        System.out.println("\nYou have chosen: " + stream.title);
                        Scanner chooseGenre = new Scanner(System.in);
                        System.out.print("\nChoose genre:\n\nPress 0 for " + stream.genreArray[0] + "\nPress 1 for " + stream.genreArray[1] + "\nPress 2 for " + stream.genreArray[2] + "\n\nInput: ");
                        int chosenGenre = chooseGenre.nextInt();
                        String genre = stream.genreArray[chosenGenre];
                        stream.setGenre(genre);
                        System.out.println("\nYou have chosen: " + stream.genre);
                        Scanner chooseType = new Scanner(System.in);
                        System.out.print("\nChoose type:\n\nPress 0 for " + stream.typeArray[0] + "\nPress 1 for " + stream.typeArray[1] + "\nPress 2 for " + stream.typeArray[2] + "\n\nInput: ");
                        int chosenType = chooseType.nextInt();
                        String type = stream.typeArray[chosenType];
                        stream.setType(type);
                        System.out.println("\nYou have chosen: " + stream.type);
                        Scanner choosePrice = new Scanner(System.in);
                        System.out.print("\nChoose price: ");
                        double price = choosePrice.nextDouble();
                        stream.setPrice(price);
                        System.out.println("\nYou have chosen: " + stream.price);
                        Scanner chooseStartTimeDate = new Scanner(System.in);
                        System.out.print("\nChoose start time and date: \n\nInsert time and date in this format: dd/mm-yyyy hh:mm\n\nInput: ");
                        String startTimeDate = chooseStartTimeDate.nextLine();
                        stream.setStartTimeDate(startTimeDate);
                        System.out.println("\nYou have chosen " + stream.startTimeDate);
                        Scanner chooseEndTimeDate = new Scanner(System.in);
                        System.out.print("\nChoose end time and date: \n\nInsert time and date in this format: dd/mm-yyyy hh:mm\n\nInput: ");
                        String endTimeDate = chooseEndTimeDate.nextLine();
                        stream.setEndTimeDate(endTimeDate);
                        System.out.println("\nYou have chosen " + stream.endTimeDate);
                        Scanner confirmStream = new Scanner(System.in);
                        System.out.print("\nDo you want to create a stream, with the following details?\n\nTitle: " + title + "\nGenre: " + genre + "\nType: " + type + "\nPrice: " + price + "\nStart date and time: " + startTimeDate + "\nEnd date and time: " + endTimeDate + "\n\nPress 1 to confirm\nPress 2 to go back\n\nInput: ");
                        int sc1 = confirmStream.nextInt();
                    switch (sc1) {
                        case 1:
                            list.addJoinableList(stream);
                            System.out.println("\nStream has been created and added to list");
                            loggedIn = false;
                            break;
                        case 2:
                            loggedIn = false;
                            break;
                    }
                    case 2:
                        list.printJoinableList();
                        break;
                    case 3:
                        System.out.println("\nCompleted stream list");
                        break;
                }
            }
        }
    }
}
Stream block: This block is used to inherit the properties for use in the class "List"
package com.company;
import java.time.LocalDateTime;
public class Stream {
    protected String listUsername;
    protected String title;
    protected String genre;
    protected String type;
    protected double price;
    protected String startTimeDate;
    protected String endTimeDate;
    public  Stream (String listUsername, String title, String genre, String type, double price, String startTimeDate, String endTimeDate) {
        this.listUsername = listUsername;
        this.title = title;
        this.genre = genre;
        this.type = type;
        this.price = price;
        this.startTimeDate = startTimeDate;
        this.endTimeDate = endTimeDate;
    }
    String genreArray[] = {"Comedy", "Lifestyle", "Music"};
    String typeArray[] = {"Entertainment", "Familiy", "Work"};
    public String getListUsername() { return listUsername; }
    public void setListUsername(String listUsername) { this.listUsername = listUsername; }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getGenre() {
        return genre;
    }
    public void setGenre(String genre) {
        this.genre = genre;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public String getStartTimeDate() {
        return startTimeDate;
    }
    public void setStartTimeDate(String startTimeDate) {
        this.startTimeDate = startTimeDate;
    }
    public String getEndTimeDate() { return endTimeDate; }
    public void setEndTimeDate(String endTimeDate) { this.endTimeDate = endTimeDate;}
}
List block: I think that the main issues are here, but I just can't figure out what is wrong.
package com.company;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
public class List extends Stream {
    public List(String listUsername, String title, String genre, String type, double price, String startTimeDate, String endTimeDate) {
        super(listUsername, title, genre, type, price, startTimeDate, endTimeDate);
    }
    ArrayList<Stream> joinableList = new ArrayList<Stream>();
    ArrayList<Stream> completedList = new ArrayList<Stream>();
    public void addJoinableList(Stream stream) {
        joinableList.add(stream);
    }
    public void printJoinableList() {
        for (Stream s : joinableList) {
            System.out.print("\nUsername: " + s.getListUsername());
            System.out.print("\nTitle: " + s.getTitle());
            System.out.print("\nGenre: " + s.getGenre());
            System.out.print("\nType: " + s.getType());
            System.out.print("\nPrice: " + s.getPrice());
            System.out.print("\nStart time and date: " + s.getStartTimeDate());
            System.out.print("\nEnd time and date: " + s.getEndTimeDate() + "\n");
        }
    }
}
All help is appreciated, thank you.
 
    