【问题标题】:String in ArrayList Not OutputtingArrayList中的字符串未输出
【发布时间】:2020-09-01 11:56:57
【问题描述】:

因隐私问题不得不撤下

【问题讨论】:

  • 我没有看到变量input 的声明。它是什么?应该是 Scanner 变量吗?
  • @RiccardoChimisso 是的,没错
  • 您可以访问Process 类吗?查看该类中的代码可能会有所帮助。
  • @EvanBailey 它里面只有变量,没有方法
  • @aqnxqyfunialgrflfe - 如果其中一个答案解决了您的问题,您可以通过将其标记为已接受来帮助社区。接受的答案有助于未来的访问者自信地使用该解决方案。查看meta.stackexchange.com/questions/5234/… 了解如何操作。

标签: java string list algorithm system.out


【解决方案1】:

scan.next() 函数获取下一个输入字符串。这就是为什么您会得到一个空行的进程名称,因为该名称已经被下一个函数在 while 条件中使用。要么使用 hasNext() 检查是否有下一行,要么获取输入并将其放入字符串变量,然后将其与单词 'finish' 进行比较。

可以看文档中的解释:https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()

引用文档:“下一个:从这个扫描器中查找并返回下一个完整的令牌”

【讨论】:

    【解决方案2】:

    问题是因为使用next() 而不是nextLine()。查看Scanner is skipping nextLine() after using next() or nextFoo()? 了解更多信息。

    替换

    while (!scan.next().equalsIgnoreCase("finish"))
    

    与

    while (!scan.nextLine().equalsIgnoreCase("finish"))
    

    另外,最好使用do...while,它保证至少执行一次它的主体,即

    do {
    
        Process p = new Process();
    
        String pn = "";
        String bt = "";
        String at = "";
        pn = input.nextLine();
        bt = input.nextLine();
        at = input.nextLine();
    
        System.out.println("Process name, CPU Burst Time, Arrival time\n ");
    
        p.process_name = pn;
        p.burstTime = Float.parseFloat(bt);
        p.arrivalTime = Float.parseFloat(at);
        fcfs.add(p);
    
    } while (!scan.nextLine().equalsIgnoreCase("finish"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-22
      • 2017-02-15
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2019-12-31
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多