此方法用于获取(通过用户输入)给定数据集中的两个最大整数并计算其产品。它适用于每个输入,直到我尝试了两个整数90000
和410065408
的数组,然后返回static int getMaxPairwiseProduct(int[] numbers) {
int max=0,lessermax=0;
int n = numbers.length;
for (int j = 0; j < n; ++j) {
//if(j==k)continue;
if(numbers[j]>0 && numbers[j]>=max) {
lessermax=max;max=numbers[j];
System.out.println(j);//k=j;
} else if(numbers[j]>lessermax) {
lessermax=numbers[j];
System.out.println(j);}
}
//result=;
return max*lessermax;
}
。
这是我的Java方法:
main
这是我的public static void main(String[] args) {
//FastScanner scanner = new FastScanner(System.in);
Scanner scanner=new Scanner(System.in);
int n = scanner.nextInt();
int[] numbers = new int[n];
for (int i = 0; i < n; i++) {
numbers[i] = scanner.nextInt();
}
scanner.close();
System.out.println(getMaxPairwiseProduct(numbers));
}
方法:
{{1}}
答案 0 :(得分:4)
它溢出了int
的容量并且缠绕着。 100000 * 90000
是9000000000
。 int
的最大正值为2 ^ 31-1,即2147483647
(略小于9000000000
的四分之一。)
如果您需要这两个数字的产品,则需要使用long
代替。
100000L * 90000L = 9000000000L = 0x218711a00L
对于32位数据类型,32位(8位十六进制数字)以外的任何内容都会因溢出而被截断。因此剩下的价值是:0x18711a00
== 410065408