Tạo mảng n phần tử, mỗi phần tử là 1 phương trình đường thẳng d: y = ax+b

Anh chị cho em hỏi em viết như thế này thì sai ở chỗ nào à, khi em nhập 2 hệ số a, b của đường thẳng thì không được ạ! Em không biết em sai ở đâu?

import java.util.Scanner;
public class DuongThang {
	public int a;
	public int b;
	

	DuongThang()
	{
		
	}
	DuongThang(int  a, int b)
	{
		this.a = a;
		this.b = b;
		
	}
	
	Scanner sc = new Scanner(System.in);
	public void NhapDT()
	{
		System.out.println("a = ");
		a = sc.nextInt();
		System.out.println("b = ");
		b = sc.nextInt();
	}
	
	public String toString()
	{
		return "a: y = " +a+ "x "+b+" ";
	}
}

// HAM MAIN
import java.util.Scanner;
public class Test {
	public static void main(String[] args)
	{
		DuongThang []dt ;
		
		Scanner sa = new Scanner(System.in);
		int n;
		System.out.println("Nhap vao so luong duong thang ");
		n = Integer.parseInt(sa.nextLine());
		dt = new DuongThang[n];
		dt[n] = new DuongThang();
		
		for(int i = 0 ;i < dt.length ; i++)
		{
			
			dt[i].NhapDT();
		}
		for(int i = 0 ; i < dt.length; i++)
		{
			System.out.println(dt[i]);
		}
		 
		
	}

Đoạn

phải là this.a và this.b chứ?

Em chạy thì nó báo lỗi ở hàm main:

Nhap vao so luong duong thang
2
Exception in thread “main” java.lang.NullPointerException
at BT1.Test.main(Test.java:18)

có phải là do cách khai báo mảng và số phần tử của em bị sai không ạ?

  • Đừng cmt như fb, cứ viết được 1 câu đã ấn reply rồi. Ở đây phần cmt có thể viết được rất dài, không cần phải khổ sở cmt nhiều như thế, loãng topic.

Nhìn cho kĩ 2 dòng này vào.

Với lại vị trí đặt của dòng khởi tạo 1 object DuongThang() hiện tại đang bị sai.

1 Like

à đúng rồi, khởi tạo phải ở trong vòng lặp for mới đúng! Em cảm ơn ạ!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?