保持循环,直到java中的输入可用

时间:2012-05-13 08:01:06

标签: java c++ loops

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

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

在java

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

先谢谢。 山塔努

5 个答案:

答案 0 :(得分:1)

一种方法是使用扫描仪。

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

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

答案 1 :(得分: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
    }

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

甚至更好地使用缓冲区:

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

答案 4 :(得分:0)

我相信为您的目的服务的最佳方式是通过多线程,其中一个线程将等待来自用户的输入并让另一个线程知道何时收到一个。同时,另一个线程将继续循环遍历。