循环打印信息

Printing information of a loop

我需要帮助在完成后打印出这个循环的信息。

for (int i = 1; i <= activityCount; i++) {
            int[] intActivites = new int[activityCount];
            int arrayLength = intActivites.length;
            System.out.println("Select time for activity #" + i);
            System.out.println("Write name for activity #" + i);
            int activityTime = sc.nextInt();
            addTime = sc.nextLine();
            if (addTime.equals(addTime)) {
                String timeActivity = sc.nextLine();
                String all = timeActivity + " @ " + activityTime + ":00";
                System.out.println(all);
            }
        }

我需要帮助将活动和 activity 次设置为名为 schedule

的字符串

假设我们忽略了这个循环的逻辑。如果您只需要在循环退出时将循环中的所有事件记录在一条日志消息中,那么:

  1. 您可以将事件消息附加到在循环之前初始化的 StringBuffer,并在循环之后打印 StringBuffer。可以制作此字符串缓冲区 final 以避免循环重新初始化它
  2. 您还可以考虑使用 log4J、SLF4J 或 Logback 等日志框架将这些事件记录到文件/控制台

查看您的代码片段中的逻辑,我假设您希望用户输入 activity 他们想在给定小时内做的事情(由整数输入表示)。最后,您可能希望打印出用户输入的整个计划。

从这个角度来看,这不仅仅是一条日志消息,它实际上是您要向程序用户显示或将其保存在数据存储中的摘要。您可以使用上面提到的方法 #1。

希望对您有所帮助:)

编辑:在此处添加源代码

import java.util.*;

class Main {

  Map<Integer, String> timeSlots;

  public static void main(String[] args) {
    Main app = new Main();
    app.startApp(4);
  }

  public void startApp(int numberOfActivities) {
    timeSlots = new HashMap();
    try (Scanner sc = new Scanner(System.in)) {
      for (int i = 1; i <= numberOfActivities; i++) {
        Integer activityTime = getActivityTime(i, sc);
        if (isTimeSlotAvailable(activityTime)) {
          timeSlots.put(activityTime, getActivityName(i, sc));
        } else {
          System.out.println("Time slot [" + activityTime + "] is already used.");
        }
      }
    }
    printTimeSlots();
  }

  private void printTimeSlots() {
    timeSlots.keySet().forEach(activityTime -> printTimeSlot(activityTime, timeSlots.get(activityTime)));
  }

  private void printTimeSlot(Integer time, String activity) {
    System.out.println(activity + " @ " + time + ":00");
  }

  private boolean isTimeSlotAvailable(Integer activityTime) {
    return (timeSlots.get(activityTime) == null);
  }

  private Integer getActivityTime(int i, Scanner sc) {
    System.out.println("Enter time for activity #" + i);
    return Integer.parseInt(sc.nextLine());
  }

  private String getActivityName(int i, Scanner sc) {
    System.out.println("Enter name of activity #" + i);
    return sc.nextLine();
  }
}