Mang đến cho bạn hành trang là Kiến thức và Kinh nghiệm

Lựa chọn chủ đề bạn quan tâm

Cùng nhau thảo luận về các vấn đề

Hãy theo dõi chúng tôi nếu bạn thấy bổ ích

  1. Hỏi đáp IT
  2. Hỏi nhanh

Hỏi về nhập xuất mảng 1 chiều trong java?

391 Lượt xem 5 Bình luận 0 Lượt báo xấu
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("\t"+A[i]);
		}
	}
	
	public static void main(String[] args) {
		int [] B = null;
		nhapmangA(B);
		xuatmang(B);
	}
}
 
Câu trả lời

- Bạn đã sẵn sàng thảo luận về chủ đề này. Hãy bấm "Viết bình luận", bạn có thể lựa chọn sử dụng tài khoản Facebook hoặc Google++

- Vì sự phát triển của cộng đồng CNTT/CNPM tại Việt Nam!

Unknown user
No responses yet

Java là pass-by-value nhé bạn
Để 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:
https://stackoverflow.com/questions/12757841/are-arrays-passed-by-value-or-passed-by-reference-in-java
http://www.journaldev.com/3884/java-is-pass-by-value-and-not-pass-by-reference
0 Lượt thích

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();

A = new int[n];
	for(int i=0;i<n;i++)
	{
		System.out.print("A["+i+"] = ");
		A[i] = in.nextInt();
	}
	return A;
}
public static int xuatmang(int A[]) {
	System.out.print("Danh sách mảng: ");
	for(int i=0;i<A.length;i++)
	{
		System.out.print("\t"+A[i]);
	}
	return 0;
}

public static void main(String[] args) {
	int [] B = null;
	nhapmangA(B);
	xuatmang(B);
}


}

0 Lượt thích

nhapmangA(B);
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ả.
public static int[] nhapmangA(int A[])
Bạn có thể bỏ tham số int A[] đi vì nó bị dư rồi
Sửa:
public static int[] nhapmangA(/*int A[] dư*/)
{
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
System.out.print("Nhập kích thước mảng A: ");
int n = in.nextInt();

	int[] A = new int[n];// tạo ra một mảng mới luôn
	for(int i=0;i<n;i++)
	{
		System.out.print("A["+i+"] = ");
		A[i] = in.nextInt();
	}
	return A;
}
 
0 Lượt thích

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!!
0 Lượt thích

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.
0 Lượt thích

Từ khóa tìm kiếm

Câu trả lời mới nhất

Tin tuyển dụng