Selesaikan masalah "Nombor Integer Terlalu Besar" Ralat untuk 600851475143
Pertimbangkan coretan kod berikut:
public class Three {
public static void main(String[] args) {
Three obj = new Three();
obj.function(600851475143);
}
private Long function(long i) {
Stack<Long> stack = new Stack<>();
for (long j = 2; j <= i; j++) {
if (i % j == 0) {
stack.push(j);
}
}
return stack.pop();
}
}
Salin selepas log masuk
Apabila>Di Java, terdapat jenis data primitif, seperti int dan long, yang mewakili nombor tanpa objek.
- int ialah integer bertanda 32-bit, bermakna ia boleh mewakili integer antara -2,147,483,648 dan 2,147,483,647.
- panjang ialah integer bertanda 64-bit, memberikan julat nilai yang lebih luas daripada -9,223,372,036,854,775,808 hingga 9,223,372,036,854,775,807.
Isu di sini ialah 600851475143 melebihi nilai maksimum yang boleh diwakili oleh int. Untuk membetulkannya, kita perlu menggunakan literal jenis panjang dengan menambahkan akhiran "L" pada nombor: 600851475143L.
obj.function(600851475143L);
Salin selepas log masuk
Dengan pengubahsuaian ini, kod akan berjalan tanpa menghadapi ralat dan akan kembali faktor perdana terbesar 600851475143L.
Atas ialah kandungan terperinci Mengapa Kod Java Saya Membuang Ralat 'Nombor Integer Terlalu Besar' Apabila Menggunakan 600851475143?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!