01/10/2018, 14:18

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]);
		}
		 
		
	}
HK boy viết 16:20 ngày 01/10/2018

Đoạn

System.out.println("a = ");
a = sc.nextInt();
System.out.println("b = ");
b = sc.nextInt();

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

Qúy Cô Màu Mè viết 16:29 ngày 01/10/2018

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)

Qúy Cô Màu Mè viết 16:18 ngày 01/10/2018

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

HK boy viết 16:32 ngày 01/10/2018
  • Đừ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.
dt = new DuongThang[n];
dt[n] = new DuongThang();

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.

Qúy Cô Màu Mè viết 16:29 ngày 01/10/2018

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

Bài liên quan
0