3

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

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

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

提前致谢。山塔努

4

5 回答 5

1

一种方法是使用扫描仪。

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

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

于 2012-05-13T08:09:52.970 回答
1

您应该尝试以下操作。

    long val;
    Scanner sc = new Scanner(System.in).useDelimiter("\n");
    while (sc.hasNext()) {
        String temp = sc.next().trim();

        val = Long.parseLong(temp);
        // do stuff
    }
于 2012-05-13T08:12:40.117 回答
0

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

public static void main(String[] args)
{
    String str=new Scanner(System.in).nextLine();
}
于 2012-05-13T08:09:39.650 回答
0

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

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

甚至更好地使用缓冲区:

byte[] buf = new buf[MAX_SIZE]
while ( in.read(buf) != -1) {
   // do your stuff
}
于 2012-05-13T08:10:04.323 回答
0

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

于 2012-05-13T08:21:32.453 回答