01/10/2018, 11:05
Hỏi về nhập xuất mảng 1 chiều trong java?
Em có đoạn code nhập xuất mảng 1 chiều như sau, nhưng khi nhập xong thì mảng B vẫn không có giá trị nên không xuất ra gì, ai giúp em với!
import java.util.Scanner;
public class Cau13 {
public static void nhapmangA(int[] A)
{
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
System.out.print("Nhập kích thước mảng A: ");
int n = in.nextInt();
A = new int[n];
for(int i=0;i<n;i++)
{
System.out.print("A["+i+"] = ");
A[i] = in.nextInt();
}
}
public static void xuatmang(int[] A) {
System.out.print("Danh sách mảng: ");
for(int i=0;i<A.length;i++)
{
System.out.print(" "+A[i]);
}
}
public static void main(String[] args) {
int [] B = null;
nhapmangA(B);
xuatmang(B);
}
}
Bài liên quan
Java là pass-by-value nhé bạn
stackoverflow.com
Để khắc phục bạn tạo hàm trả về một mảng sau đó gắn B vô
Tìm hiểu thêm:
Are arrays passed by value or passed by reference in Java?
và
http://www.journaldev.com/3884/java-is-pass-by-value-and-not-pass-by-reference
Mình sửa vẫn không được, bạn có thể hướng dẫn code cho mình được không, cảm ơn bạn!
import java.util.Scanner;
public class Cau13 {
public static int[] nhapmangA(int A[])
{
@SuppressWarnings(“resource”)
Scanner in = new Scanner(System.in);
System.out.print("Nhập kích thước mảng A: ");
int n = in.nextInt();
}
Vấn đề là bạn quên gán B, array được trả về bởi nhapmangA nhưng không có biến nào chứa kết quả trả về cả
Bạn có thể bỏ tham số int A[] đi vì nó bị dư rồi
Sửa:
Có cách nào đưa tham số vào hàm, để khởi tạo mảng mới trong hàm main và dùng mảng đó làm tham số cho hàm nhập và xuất không? Nếu làm như vậy thì mình không dùng được 2 hàm nhập, xuất riêng ra được. Cảm ơn bạn
Trong Hàm Nhập thì bạn đã gán A tham chiếu tới một vùng nhớ khác rồi, nên mọi tham số khi truyền vào sẽ không có giá trị nào nữa do A ko còn tham chiếu tới B nữa. Khắc phục thì bạn bỏ A = new int[] trong hàm nhập đi, và khởi tạo cho mảng B ở bên rồi truyền vào
Mình bỏ A = new int[] rồi mà vẫn không được, bỏ xong thì vừa nhập xong A[0] là bị lổi luôn. Bạn kiểm tra giúp mình còn lổi chổ nào nữa không với. Cảm ơn bạn nhiều.
Bạn có thể tạo một class ví dụ
class MyInput
có một property là mảng kiểu int, rồi dùng object của class này để truyền data qua 2 method.vẫn lỗi chỗ đó thôi, đoán là nullpointerexception, lí do: bạn truy cập vào đối tượng chưa khởi taoj
Bạn có thể sửa code giúp mình được không! Mình cảm ơn
Không, bạn nên tự làm thì tốt hơn.
Có mấy keyword hint cho bạn:
Kiếm sách java học từ đầu đến cuối thì sẽ làm được bài trên thôi. Đừng nhảy cóc không đâu vào đâu đâu
Hi bạn ! lỗi sai đầu tiên của bạn đó là tạo ra một mảng B null, khi bạn truyền vào thì mặc định nó sẽ null.
tiếp theo khi bạn tạo mảng A ở mỗi method thì nó chỉ có giá trị trong method đó , muốn dùng chung bạn nên ra hàm main để tạo!
mình giợi ý cách giải, đó là bạn nhập chiều dài của mảng ngay hàm main, sau đó tạo mảng ngay hàm main luôn! sau đó lấy mảng vừa tạo ra truyền vào hai hàm xuất , nhập!
cám ơn bạn đã đăng bài!