Run không được code java

Dạ cho em hỏi, e Run không được ạ, mọi người chỉ lỗi ra dùm em với ạ ! e cam on

import java.util.LinkedList;


class Sender{
	String msg = "This is assignment 2 in Data Structures and Alogrithm";
	LinkedList<Character>messageQueue = new LinkedList<Character>();
	void send(Receiver r){
		Character ch;
		for (int i = 0; i < msg.length(); i++)
			messageQueue.add(msg.charAt(i));
		
		while (!messageQueue.isEmpty()){
			char packet = messageQueue.removeFirst();
			r.receiver(packet);
		}
	}
}
class Receiver{
	String msg = new String();
	LinkedList<Character>messageQueue = new LinkedList<Character>();
	void receiver(char ch){
		messageQueue.add(ch);
	}
	void printMessage(){
		while (!messageQueue.isEmpty()){
			Character ch = messageQueue.removeFirst();
			msg.concat(ch.toString());
		}
		System.out.print("msg");
	}
}

public class Programing {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Sender s = new Sender();
		Receiver r = new Receiver();
		
	}

}

3 Likes

ở chổ sender s = new sender(); nó bị lỗi và k chạy được bạn ơi

Xem hình của @noz1995 chưa bạn?
Xem kĩ lại bạn ấy viết thế nào.

3 Likes

Tên gói và tên lớp là do mỗi người đặt thôi để sao cũng được, bạn để nguyên là của bạn thôi.

Quan trọng là vị trí của 2 lớp SenderReceiver và phương thức main() đều phải nằm trong lớp chính.
Lớp chính của @noz1995main còn lớp chính của bạn là Programing.

3 Likes

Static method không thể truy cập đến non static member. Để truy cập vào non static member thì lại thông qua instance. Tuy nhiên có cách sửa khác dễ hiểu hơn là thêm từ khóa static vào trước từ khoá class ở 2 inner class Response và Receiver

4 Likes

Debug ra sai hàm printmessage vậy ở đây đã sai cú pháp. Để cú pháp đúng thì là gì nhỉ b ?

1 Like

thì mình đang bị sai ngay chỗ printmessage nên k biết chỉnh s nè

Chuyển 2 lớp sang tĩnh (static).

// ...
static class Sender{
// ...

static class Receiver{
// ..
2 Likes

code thì hết lỗi, nhưng k debug được hay run được !

tĩnh thì vẫn không ra được kết quả bạn!
kết quả sau khi in ra màn hình sẽ là đoạn “This is assignment 2…”, đoạn này sẽ bị cắt nhỏ ra nếu debug sẽ thấy.
Ở ảnh gốc mà bạn trên đăng lên thì hàm System.out.println(“msg”); như vậy thì in ra sẽ là msg, phải bỏ dấu ngoặc kép đi.

		while (!messagesQueue.isEmpty()){
		Character ch = messagesQueue.removeFirst();
		msg.concat(ch.toString());

mình nghĩ hàm trên sai!

đúng r á bạn, hàm đó đang bị sai nên sửa ntn b

Sắp đi ngủ rồi.
Bạn phải gọi các phương thức của 2 lớp thì mới chạy chứ!


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Sender s = new Sender();
		Receiver r = new Receiver();
		
s.send(r);
r.printMessage();
	}

Và tất nhiên, sửa chỗ in kết quả:

System.out.print(msg); // Không nháy kép.
2 Likes

Ủa vậy mà Hà Mã Tím đáng yêu tưởng qua nay xong rồi, không ngờ giờ vẫn còn.
Có 2 vấn đề cần sửa:

  1. Code bạn sai tại vị trí Receiver>printMessage()>while
    Dòng:
    msg.concat(ch.toString());
    
    Cần được thay bằng:
    msg = msg.concat(ch.toString());
    
  2. Cần thêm tại Programing>main
    Một số dòng:
    s.send(r);
    r.printMessage();
    

Đây là kết quả chạy:

Đây là code hoàn chỉnh:

import java.util.LinkedList;

class Sender{

	String msg = "This is assignment 2 in Data Structures and Alogrithm";
	LinkedList<Character>messageQueue = new LinkedList<Character>();

	void send(Receiver r){
		Character ch;
		for (int i = 0; i < msg.length(); i++)
			messageQueue.add(msg.charAt(i));
		
		while (!messageQueue.isEmpty()){
			char packet = messageQueue.removeFirst();
			r.receiver(packet);
		}
	}
}
class Receiver{

	String msg = new String();
	LinkedList<Character>messageQueue = new LinkedList<Character>();

	void receiver(char ch){
		messageQueue.add(ch);
	}

	void printMessage(){
		while (!messageQueue.isEmpty()){
			Character ch = messageQueue.removeFirst();
			msg = msg.concat(ch.toString()); //HMT edited here
			System.out.println("looping: " + msg); //HMT added here, unsplash to show process
		}
		System.out.println(msg); //HMT edited here
	}
}

public class Programing {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Sender s = new Sender();
		Receiver r = new Receiver();

		//HMT added here
		s.send(r);
		r.printMessage();	
	}
}

Chúc bạn buổi khuya tốt lành :crazy_face::crazy_face::crazy_face::crazy_face::crazy_face:

4 Likes

thanks bạn nhiều nha

1 Like

không có chi bạn vì mình là Hà Mã Tím đáng yêu:smiling_face_with_three_hearts::smiling_face_with_three_hearts::smiling_face_with_three_hearts::smiling_face_with_three_hearts::smiling_face_with_three_hearts:

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