java - 打印循环信息

标签 java for-loop java.util.scanner

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

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 和 Activity 时间设置为名为 Schedule 的字符串

最佳答案

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

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

查看代码片段中的逻辑,我假设您希望用户输入他们想要在给定时间内执行的 Activity (由整数输入表示)。最后,您需要打印出用户输入的整个计划。

使用该 View ,这不仅仅是一条日志消息,这实际上是您想要向程序用户显示或将其保留在数据存储中的摘要。您可以使用上面提到的方法#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();
  }
}

关于java - 打印循环信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61811049/

相关文章:

java - 搜索查看在线搜索

php - 逗号在for循环的第一个参数中起什么作用?

for-loop - Rust 中的 for 循环变体之间有什么区别?

python - 用子字符串替换字符串

java - 标点符号和 .next() 方法

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - 使用JSP连接Mysql和IntelliJ Ultimate 2016.2.3

java - 如何将 Camel Quartz 集群与队列消费结合使用?

java - 比较Hadoop MapReduce中的两个文件

Java - nextInt() 大小限制