编辑::我以为会有3个数组。问题不在于此。
我正在尝试从Jutge.org平台编写一个程序,该程序读取整数序列并显示每个序列的最大值。
输入包含序列的输入。每个序列以其元素数n> 0开头,后跟n个整数。 给定数字和序列[]的长度(将在数字序列之前引入),输入/输出样本如下所示:
输入
10 (array length input)
10 30 40 50 60 30 40 15 10 20
2 (array length input)
-54 -134
4 (array length input)
1 1 1 1
输出
60
-54
1
我有确切的输出,但是我认为缺少了一些东西,因为Judge.org编译器不会接受我的代码正确。
import java.util.*;
public class problema7 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int max1=Integer.MIN_VALUE;
int max2=Integer.MIN_VALUE;
int max3=Integer.MIN_VALUE;
// sequence 1
int num1 = in.nextInt();
int[] seq1 = new int [num1];
for(int x = 0; x<num1; x++) {
seq1[x] = in.nextInt();
if (max1 == 0 || seq1[x] > max1) max1 = seq1[x];
}
// sequence 2
int num2 = in.nextInt();
int[] seq2 = new int [num2];
for(int x = 0; x < num2; x++) {
seq2[x] = in.nextInt();
if (max2 == 0 || seq2[x] > max2) max2 = seq2[x];
}
// sequence 3
int num3 = in.nextInt();
int[] seq3 = new int [num3];
for(int x = 0; x<num3; x++) {
seq3[x] = in.nextInt();
if (max3 == 0 || seq3[x] > max3) max3 = seq3[x];
}
System.out.println(max1);
System.out.println(max2);
System.out.println(max3);
}
}
问题:
答案 0 :(得分:0)
您似乎假设将要处理3个数组。问题描述中未对此进行说明。
答案 1 :(得分:0)
首先欢迎来到SO。
第二,Scott的观察是正确的,您确定您的输入将始终有3行吗?这似乎有些束缚。 轰鸣声我做了一个简单的课堂来说明如何解决这个问题:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line;
System.out.println("Insert line (empty terminates the program):");
while(!(line = scanner.nextLine()).isBlank()){
String[] segments = line.split(" ", 2);
int population = Integer.parseInt(segments[0]);
String[] sequence = segments[1].trim().split(" ");
if(population != sequence.length){
System.err.println("Population declaration and sequence size do not match\nPopulation: " + population + "\nSequence: "+ segments[1] + ", size: " + sequence[1].length());
System.exit(0);
}
int max = Integer.MIN_VALUE;
for (String number : sequence) {
max = Math.max(Integer.parseInt(number), max);
}
System.out.println(max);
System.out.println("Insert line (empty terminates the program):");
}
System.out.println("Now exiting");
}
}
它期望从键盘输入,在一行的第一个空格处分割,检查是否在第一个数字之后插入了正确数目的数字(该数字表示以下序列的填充),然后仅找到最大数目并打印出来。如果您输入空白行,它将退出。
我建议您根据输入内容进行调整。
编辑:while循环的条件使用Java 11的isBlank()方法。因此,您需要Java版本> = 11,或者可以调整条件以使其与所使用的版本兼容。