我需要使用 C++ 或 Java 读取未知数量的输入。输入每行正好有两个数字。我需要使用cin
or aSystem.in
Scanner
因为输入来自控制台,而不是来自文件。
示例输入:
1 2
3 4
7 8
100 200
121 10
我想将值存储在向量中。我不知道我有多少对数字。如何设计一个while
循环来读取数字,以便将它们放入向量中?
您可以在 C++ 中使用惯用语std::copy
:(在此处使用虚拟化输入字符串查看它)
std::vector<int> vec;
std::copy (
std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),
std::back_inserter(vec)
);
这样,每次从输入流中读取整数时,它将附加到向量上,直到读取失败,无论是来自错误输入还是 EOF。
爪哇:
Scanner sc = new Scanner(System.in);
String inputLine;
while(sc.hasNextLine()) {
inputLine = sc.nextLine();
//parse inputLine however you want, and add to your vector
}
除了使用缓冲阅读器,可以使用 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;
}
}
}
}
我发现的唯一解决方法:
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();
}
}
}
对于寻找不太花哨的 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;
}