如果我还不知道输入大小,那么在 JAVA 中保持循环迭代直到可用的方法是什么。在 C++ 中,它可以按如下方式完成。
int main(){
int val;
while(cin >> val){
//do stuff
}
}
在java中做类似事情(如上)的方法是什么
提前致谢。山塔努
一种方法是使用扫描仪。
long val;
Scanner sc=new Scanner(System.in);
while (sc.hasNextLong() ) {
val = sc.nextLong();
// do stuff
}
这相当于您提供的 cpp 代码。但不完全是你要求的。只要读取字符串中有合法输入,它就会循环。
您应该尝试以下操作。
long val;
Scanner sc = new Scanner(System.in).useDelimiter("\n");
while (sc.hasNext()) {
String temp = sc.next().trim();
val = Long.parseLong(temp);
// do stuff
}
根据您的具体要求,使用 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
}
我相信实现您的目的的最佳方法是通过多线程,其中一个线程将等待用户的输入,并让另一个线程知道它何时收到。与此同时,另一个线程将继续迭代循环。