正确显示1D阵列输出的麻烦

时间:2018-06-05 13:18:44

标签: java arrays output display

我的程序包含几个选项,用于处理有关节目(名称,日期,时间)的用户输入数据。其中一个选项是显示每天的数据和节目总数(例如:如果星期二有2个节目,它将显示“星期二有2个节目”)。到目前为止,显示所有数据的输出正在工作,但是当显示特定日期的节目数时,它无法正常工作。我已经阅读了其他几个似乎每天都有一个switch语句的java程序,但这些程序也没有用。如果对我的代码有什么改变有任何建议,我会非常感激!谢谢

我已经编辑过上一段代码,但仍然没有用

注意:int dayCount放在enter数据方法中;在一天之后[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 :(得分:0)

在您的循环中打印您拥有的总显示:

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以供一周中的某些日子使用。