我们在笔试时,比如赛码就很奇怪每次输入都由于输入条件的问题导致输入出错。因此,有如下总结。
将输入条件分为两种情况:①输入测试样本的数据长度已知(即行数和列数);②输入的多维样本数据长度未知
- 对于第一种情况
Scanner scanner = new Scanner(System.in);
//hasNextInt()读入数据为非int类型时 键盘键入结束
while (scanner.hasNextInt()){
int hang = scanner.nextInt();
int lie = scanner.nextInt();
for (int i=0;i<m;i++){
//读取每行hang的数据
int a =scanner.nextInt();
int b=scanner.nextInt();
}
}
- 对于第二种情况,即不知道输入数据维度长度
我们可以利用字符输入流的形式按行读取数据,后续利用split()对输入数据按要求格式进行分割,提取到数组中,以便后续处理
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
//假设数据是空格分割输入的 将数据按空格分割变为数组存储
String[] ns = s.split("\\s");
}