01/10/2018, 00:50

Hỏi về Return trong java

mình có đoạn code java sau :

  public static boolean areFactors(int[] a,int n){
for(int i=0; i<a.length; i++){
    if(n%a[i]==0)
        { return true;}
    else {
        return false;
    }
}

}
nó báo lỗi là missing statement return ,mình không hiểu về return lắm , bạn nào chỉ cặn kẽ cho mình với, cám ơn nhiều

anon52681320 viết 02:58 ngày 01/10/2018

Nếu nó không bắt đầu được vòng lặp thì sao ?

Lợi Đỗ viết 02:52 ngày 01/10/2018

ý bạn là sao, mình không hiểu ?

anon52681320 viết 03:01 ngày 01/10/2018

nếu nó không chạy được vào vòng lặp for, vì bất kỳ lý do gì, thì nó có chạy được câu lệnh return nào không?? Mà khi không chạy được câu lệnh return nào, thì có phải nó là missing statement return không??

Cái này logic cơ bản thôi mà!

Lợi Đỗ viết 03:01 ngày 01/10/2018

với method boolean này thì ở cuối bao giờ cũng đòi câu lệnh return , thiếu ở thiếu cái dòng cuối đấy , chứ không phải ở trên

Quân viết 02:58 ngày 01/10/2018

bạn kia nói đúng rồi còn thắc mắc gì nữa. nếu a.length mà bằng 0 thì vòng lặp đâu có chạy, mà vòng lặp k chạy thì lấy gì để return.

Lợi Đỗ viết 03:05 ngày 01/10/2018

a.length bằng không ở đâu

Quân viết 02:56 ngày 01/10/2018

Mình xin thua

cdxf viết 03:00 ngày 01/10/2018

Chuyển ngành ngay khi có thể đi bạn, mình không đùa đâu

Lợi Đỗ viết 02:58 ngày 01/10/2018

thế các bạn thử viết lại cho đúng xem nào .Đề bài là Viết một phương thức có tên areFactors để nhận vào một số nguyên, n, và một mảng các số nguyên, và trả lại true nếu các số trong mảng đều là ước số của n

Nguyễn Hoàng viết 02:52 ngày 01/10/2018

giải thích kĩ cho bạn 1 chút, java là 1 ngôn ngữ có thể nói là kiểm soát khá chặt chẽ - strong type , trong java nếu khi khai báo phương thức mà bạn để từ khóa là void thì bạn không cần trả về gì cả, nhưng khi bạn đã khai báo là boolean thì bạn buộc phải trả về cho nó 1 giá trị boolean, khi bạn để lệnh return ở trong if else thì nếu như điều kiện này không thỏa mã thì sẽ không có gì dc return và sẽ gây ra lỗi. giả sử bạn có cho cái biểu thức điều kiện như này if(true){return true} thì vẫn bị báo lỗi complie thôi, vì đây là logic của nó. nếu đọc xong bạn vẫn không hiểu gì thì mình nghĩ ngành này không hợp với bạn thật ,…

Nguyen Ca viết 02:57 ngày 01/10/2018

Bạn tìm hiểu phương pháp cờ hiệu để làm bài này nhé, mà cơ bản là bạn không hiểu rõ function.

Lợi Đỗ viết 03:06 ngày 01/10/2018

thế các bạn thử viết lại cho đúng xem nào .Đề bài là Viết một phương thức có tên areFactors để nhận vào một số nguyên, n, và một mảng các số nguyên, và trả lại true nếu các số trong mảng đều là ước số của n

Nguyễn Hoàng viết 02:58 ngày 01/10/2018
 public static boolean areFactors(int[] a,int n){
  	boolean result = true;
for(int i=0; i<a.length; i++){
    if(n%a[i]!=0)
        { result = false;}
   
      
    
}
  return result;
}

mình không biết dùng code format, bạn thử coi nó chạy đúng không

Lợi Đỗ viết 02:56 ngày 01/10/2018

có cách nào mà không dùng đến result không, do mình tự mày mò học , không qua trường lớp nào cả , bạn có thể giải thích kỹ hơn về đoạn này được không :"… giả sử bạn có cho cái biểu thức điều kiện như này if(true){return true}…"

cdxf viết 03:03 ngày 01/10/2018
public static boolean areFactors(int[] a,int n){
	if(a == null) return false;
  	if(a.length == 0) return false;
	for(int i=0; i<a.length; i++)
		if(n%a[i] != 0) return false;
	return true;
}
Lợi Đỗ viết 02:51 ngày 01/10/2018

biểu thức sai rồi , hình như thiếu

cdxf viết 02:54 ngày 01/10/2018

Chạy lại thử đi bạn, mình nhầm lẫn bên js xíu

Lợi Đỗ viết 03:00 ngày 01/10/2018

không cần chạy thử , lúc nãy thừa dấu= thôi , không cần thêm cái gì cả , cách của Nguyễn Hoàng, mình thấy hợp lý nhất ,vẫn đề không ở chỗ a.length==0, mình nghĩ nó nằm ở thuật toán của mình

Anh Tuấn Vũ viết 02:57 ngày 01/10/2018

các bác trên nói cũng không thừa. nhưng có vẻ bác làm ngta hớ rồi

Lợi Đỗ viết 03:00 ngày 01/10/2018

cám ơn các bạn , mình sẽ chú ý hơn , mình sai từ ngay trong for , cám ơn rất nhiều

Bài liên quan
0