我需要使用C ++或Java读取未知数量的输入。输入每行只有两个数字。我需要使用cin
或System.in
Scanner
,因为输入来自控制台,而不是来自文件。
示例输入:
1 2
3 4
7 8
100 200
121 10
我想将值存储在矢量中。我不知道我有多少对数字。如何设计while
循环来读取数字,以便将它们放入向量中?
答案 0 :(得分:6)
您可以在C ++中使用惯用的std::copy
:( see it work here with virtualized input strings)
std::vector<int> vec;
std::copy (
std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),
std::back_inserter(vec)
);
这样,每次从输入流读取整数时它都会附加到向量上,直到它读取失败,无论是输入错误还是EOF。
答案 1 :(得分:4)
Java:
Scanner sc = new Scanner(System.in);
String inputLine;
while(sc.hasNextLine()) {
inputLine = sc.nextLine();
//parse inputLine however you want, and add to your vector
}
答案 2 :(得分: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;
}
}
}
}
答案 3 :(得分:0)
我发现只有解决方法:
pandas Dataframe
答案 4 :(得分: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;
}