保持循环,直到输入在 Java 中可用

Keep Looping until inputs are available in java

本文关键字:Java 输入 循环      更新时间:2023-10-16

如果我还不知道输入大小,那么在 JAVA 中继续循环迭代直到它可用的方法是什么?在C++可以按如下方式完成。

int main(){
    int val;
    while(cin >> val){
           //do stuff
    } 
}

在java中做类似事情(如上所述)的方法是什么

提前谢谢。Shantanu

您应该尝试以下操作。

    long val;
    Scanner sc = new Scanner(System.in).useDelimiter("n");
    while (sc.hasNext()) {
        String temp = sc.next().trim();
        val = Long.parseLong(temp);
        // do stuff
    }

一种方法是使用扫描仪。

long val;
Scanner sc=new Scanner(System.in);
while (sc.hasNextLong() ) {
    val = sc.nextLong();
    // do stuff
}

这等效于您提供的 cpp 代码。但不完全是你所要求的。只要读取字符串中有合法输入,它就会循环。

根据您的特定要求,请使用 Scanner 类中的方法。这个读了一整行。这意味着用户必须在大多数系统中按回车键。

public static void main(String[] args)
{
    String str=new Scanner(System.in).nextLine();
}

不要实现繁忙循环。您可能更喜欢使用流。流的方法read()在数据到达之前被阻止,因此您的代码将很简单,没有繁忙的循环,并且完全按照您想要的方式工作:

while ( in.read() != -1) {
   // do your stuff
}

甚至更好地使用缓冲区:

byte[] buf = new buf[MAX_SIZE]
while ( in.read(buf) != -1) {
   // do your stuff
}

我相信实现您的目的的最佳方法是通过多线程,其中一个线程将等待用户的输入,并在收到输入时让另一个线程知道。与此同时,另一个线程将继续遍历循环。