01/10/2018, 08:26
Lỗi return trong java
Chào các anh, chị trong group. Em mới học java nên còn hơi mơ hồ .Mọi người cho em hỏi một bài toán là tìm số hoàn thiện trong mảng nhưng mà khi chạy hàm luôn trả về -1 (trong khi em nhập giá trị thỏa), nhờ mọi người tìm giúp em lỗi sai ạ. Em cảm ơn
public static void main(String[] args) {
// Tìm số hoàn thiện (Tổng các ước bằng chính nó)
// cuối cùng trong mảng nếu không
// có thì trả về giá trị là -1//
int n = 0;
int arr[] = new int[100];
nhap(n, arr);
int sohoanthien = soHoanThien(n, arr);
System.out.println("Số hoàn thiện cuối cùng trong mảng là: " + sohoanthien);
}// end main
public static void nhap(int n, int arr[]) {
Scanner sc = new Scanner(System.in);
System.out.println("Nhập số lượng phần tử trong mảng");
do {
n = sc.nextInt();
if (n <= 0 || n > 100) {
System.out.println("*****Lỗi nhập dữ liệu. Vui lòng nhập lại*****");
}
} while (n <= 0 || n > 100);
// for
System.out.println("Nhập giá trị phần tử");
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
System.out.println("arr[" + i + "]= " + arr[i]);
} // end for
}// end nhap
public static int soHoanThien(int n, int arr[]) {
// for
int num;
int sum;
for (int i = n - 1; i >= 0; i--) {
num = arr[i];
sum = 0;
for (int j = 1; j < num; j++) {
if (num % j == 0) {
sum = sum + j;
} // end if
} // end for
if (sum == num) {
return num;
} // end if
} // end for
return -1;
}// end soHoanThien
Bài liên quan
đặt breakpoint tai hàm public static int soHoanThien(int n, int arr[]) để xem giá trị n, bạn sẽ biết mình sai chổ nào!!!
vì hàm luôn có 100 phần tử, khi nhập không đủ các pt kia sẽ mặc định là 0, mà 1 > 0 sai nên vòng for chỉ chạy 1 lần, num =0, sum = 0+ 1 =1 , nên return -1
mà e chạy từ n - 1 đến 0 mà
hic nhầm,n = 0 mặc dù qua hàm nhap nhưng n vẫn = 0
cho hàm nhap vào trong hàm sohoanthien là dc.
dạ rồi em cảm ơn