static long arrayMaxMin[];
public static void main(String[] args) {
try{ Scanner in = new Scanner(System.in);
long[] arr = new long[5];
for(int arr_i=0; arr_i < 5; arr_i++){
arr[arr_i] =Long.valueOf(Math.abs(in.nextLong()));
}
arrayMaxMin = calculate(arr);
}catch(InputMismatchException e)
{
e.getMessage();
}
try{ long[] array = findMaxMin(arrayMaxMin);
for(int ij=0;ij<array.length;ij++){
System.out.print(array[ij]+" ");
}
}catch(NullPointerException e){
e.getMessage();
}
}
public static long[] calculate(long[] arrayMaxMin ){
int max=0,min=0;
long[] outputarray={0,0,0,0,0};
for(int i=0;i<arrayMaxMin.length;i++){
for(int j=0;j<arrayMaxMin.length;j++){
if(i==j){
//do nothing
}else {
outputarray[i] = outputarray[i]+arrayMaxMin[j];
}
}
}
return outputarray;
}
public static long[] findMaxMin(long[] arr){
long max=0,min=0;
try{ for(int i=0;i<arr.length;i++){
if(max<arr[i]){
max= arr[i];
}else{
min= arr[i];
}
}
long output[]={min,max};
return output;
}catch(NullPointerException e){
e.getMessage();
return null;
}
}
好吧,我在这里尝试hackerrank问题,而我却没有得到在MIN-MAX问题中导致某些测试用例失败的可能原因。
我不明白,这里缺少什么,或者我缺少哪种情况,请帮助我,好吧,我想我缺少的是如果输入的是
7777777777777777777777比它失败了,谁能帮忙
问题出在
给定五个正整数,找到可以通过将五个整数中的四个精确相加得出的最小值和最大值。然后,将相应的最小值和最大值打印为两个以空格分隔的长整数的一行。
输入格式
一行,由五个以空格分隔的整数组成。
约束条件
每个整数都在包含范围之内。
{1,10 ^ 9}
打印两个以空格分隔的长整数,分别表示可以通过对五个整数中的四个精确求和而得出的最小值和最大值。 (输出可以大于32位整数。)
如您所见,最小和为,最大和为。因此,我们将这些最小和最大和作为两个空格分隔的整数打印在新行上。
提示:当心整数溢出!使用64位整数。
最佳答案
首先错在这里的事实是您吞下了这些肽…
这里:
catch(InputMismatchException e) {
e.getMessage();
}
应该
catch (InputMismatchException e) {
e.printStackTrace();
}
然后,您将能够查看应用程序崩溃的原因:
java.util.InputMismatchException:对于输入字符串:“ 7777777777777777777777”
此输入:7777777777777777777777不是有效的长...
这就是为什么您从教授那里得到提示的原因:使用64位整数。但是7777777777777777777777比那更大...因此是无效的输入,导致扫描器试图长时间读取时崩溃。