Проблема с отображением корректного вывода 1D массива - PullRequest
0 голосов
/ 05 июня 2018

Моя программа состоит из нескольких опций того, что делать с пользовательскими данными о шоу (имя, день, время).Одним из вариантов является отображение данных и общего количества шоу в день (например, если во вторник будет 2 шоу, будет отображаться «Есть 2 шоу во вторник»).Пока что вывод для отображения всех данных работает, но когда дело доходит до отображения количества шоу в определенный день, он не работает должным образом.Я читал несколько других Java-программ, которые, кажется, каждый день имеют оператор switch, но это тоже не сработало.Если есть какие-либо предложения относительно того, что я должен изменить в своем коде, я буду очень признателен!Спасибо

Я отредактировал свой код из предыдущего, но он все еще не работал

Примечание: int dayCount помещается во вводимые данныеСпособ;после дня [i] = br.readLine ();

Вот мой класс:

import java.io.*;
public class Javavision {

static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
static String name[] = new String[1000];
static String day[] = new String[1000];
static String time[] = new String[1000];
static int dayCount = 0; 
static int x, i, j, smallest;
static String temp;

Вот мой код:

  public static void showShows() {

    //output all shows
    for (i = 0; i < x; i++) {
    System.out.println("Name : " + name[i]);
    System.out.println("Day : " + day[i]);
    System.out.println("Time(2:30 am = 0230) : " + time[i] + "\r");

    } **The problem is here**
    for (i = 0; i < x; i++) {
        if(i ==0) {
        System.out.println("There is " + dayCount + " shows on " + day[i]);
        }
    }
}

Вот вывод:

Name : The Flash
Day : Sunday
Time(2:30 am = 0230) : 0125

Name : Suits
Day : Sunday
Time(2:30 am = 0230) : 0450

Name : Java Program
Day : Tuesday
Time(2:30 am = 0230) : 0330

There is 3 shows on Sunday

Здесь я увеличиваю dayCount:

//Method addShow
public static void addShow() throws IOException {
    //initialize counter
    x = 0;
    do {
    //Update Array
    System.out.println("Enter Name of Show: ");
    name[x] = in.readLine();
    System.out.println("Enter Day of Show: ");
    day[x] = in.readLine();
    dayCount++;
    System.out.println("Enter Time of Show (ex: 2:30am = 0230) : ");
    time[x] = in.readLine();
    //Increase counter
    x++;
    //Ask if the user wants to stop
    System.out.println("\nTo continue press Enter ");
    System.out.println("To Quit, type in 'quit': ");
    }
    while((in.readLine().compareTo("quit"))!=0);

//Method addShow()    
}

1 Ответ

0 голосов
/ 06 июня 2018

В вашем цикле, который печатает общее количество показов, у вас есть:

for (i = 0; i < x; i++) {
    if(i ==0) {
    System.out.println("There is " + dayCount + " shows on " + day[i]);
    }
}

if(i == 0) делает так, что println выполняется только на первой итерации цикла.Возьмите оператор if и получите:

for (i = 0; i < x; i++) {
    System.out.println("There is " + dayCount + " shows on " + day[i]);        
}

И это должно распечатать остальные дни

Также у вас есть только одна переменная dayCount, которую вы используете для всех дней.Поэтому независимо от того, в какой день шоу, вы увеличиваете dayCount.(Если у вас есть три шоу в разные дни, вы все равно увеличиваете dayCount каждый раз, так что это показывает, что у вас есть три шоу в каждый день, когда вы распечатываете его) Если вы хотите иметь отдельную переменную dayCount для каждого дня, я рекомендуюиспользуя Hashmap.(Используя день в качестве ключа и dayCount в качестве значения)

Также вы можете посмотреть enums, чтобы использовать для дней недели.

...