3

我需要使用 C++ 或 Java 读取未知数量的输入。输入每行正好有两个数字。我需要使用cinor aSystem.in Scanner因为输入来自控制台,而不是来自文件。

示例输入:

1 2

3 4

7 8

100 200

121 10

我想将值存储在向量中。我不知道我有多少对数字。如何设计一个while循环来读取数字,以便将它们放入向量中?

4

5 回答 5

6

您可以在 C++ 中使用惯用语std::copy:(在此处使用虚拟化输入字符串查看它

std::vector<int> vec;
std::copy (
    std::istream_iterator<int>(std::cin), 
    std::istream_iterator<int>(), 
    std::back_inserter(vec)
);

这样,每次从输入流中读取整数时,它将附加到向量上,直到读取失败,无论是来自错误输入还是 EOF。

于 2012-10-04T04:11:12.000 回答
4

爪哇:

Scanner sc = new Scanner(System.in);
String inputLine;
while(sc.hasNextLine()) {
  inputLine = sc.nextLine();
  //parse inputLine however you want, and add to your vector
}
于 2012-10-04T04:10:15.330 回答
1

除了使用缓冲阅读器,可以使用 Scanner 如下来完成相同的操作

import java.util.*;

公共类解决方案{

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    while(true)
    {
        String Line = new String(scan.nextLine());
        if(Line.length()==0)
        {
            break;
        }
    }
}

}

于 2018-09-08T19:31:09.707 回答
0

我发现的唯一解决方法:

import java.io.*;

class Solution {
    public static void main(String args[] ) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int i=1 ;
        String line =br.readLine();
        while(line.length()>0){
            System.out.println(line);
            line = br.readLine();
        }    
    }
}
于 2015-08-21T08:23:17.907 回答
0

对于寻找不太花哨的 C++ 代码的人:

    #include<iostream>
    #include<vector>
    int main(){
        std::vector<int>inputs;  //any container
        for(int i;std::cin>>i;)  //here the magic happens
            inputs.push_back(i); //press Ctrl+D to break the loop
        for(int num:inputs)      //optional 
            std::cout<<num<<endl;
    }
于 2020-02-10T18:26:30.517 回答