【问题标题】:Java program does not loop [duplicate]Java程序不循环[重复]
【发布时间】:2016-04-03 01:35:28
【问题描述】:

我有一个从文本文件中读取的程序。以下是文本文件的摘录。我想要做的是读取前 3 行并将单元号(TD684)输出到控制台

|12.233     |2016001     |TD684         |Prof. P           |04/01/2016     |01
|12.233     |2016035     |TD684         |Prof. P           |04/01/2016     |01
|12.233     |2016455     |TD684         |Prof. P           |04/01/2016     |01
|10.456     |2016783     |BT473         |Dr. G             |07/01/2016     |01

以下是我用来执行此操作的程序。我已将变量初始化为 false。第一次运行程序时,它应该将 TD684 分配给变量单元。之后应该检查下一行是否也有 TD684。所以理想情况下它应该输出 TD684 3 次到控制台。但它只发生一次,这让我相信循环不起作用。

    while (switched == false){
        String line = sc.nextLine();
        String[] parts = line.split(Pattern.quote("|"));
        if (timesrun == 0){
          unit = parts[3];
          timesrun++;
        }
        if (parts[3] == unit){
          System.out.println(parts[3]);
        }else{
          switched = true;
        }
    }

有人可以告诉我我的程序没有循环的原因吗?

【问题讨论】:

  • 不应该是timesrun == 3吗?
  • 不确定unit 是什么,但它看起来像是某种String comparison parts[3] == unit。使用string.equals(string)。字符串中也可能有空格。
  • 不能用==比较字符串,需要做unit.equals(part[3])

标签: java loops while-loop file-handling


【解决方案1】:

你应该使用equals比较字符串相等性:

if ( parts[3].equals(unit) ) {

使用==,您可以检查它们是否完全相同,因为parts[3] 在每个循环中都会重新制作,而unit 保持不变。

【讨论】:

  • parts[3].trim() 因为有很多空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 2019-04-13
  • 2019-05-03
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多