Hỏi lỗi "Variable is never read" trên netbeans

package test;

import java.util.Scanner;

/**
 *
 * @author Admin
 */
public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập tên: ");
        String ten = sc.nextLine();
        
    }
    
    
}

Các bác cho e hỏi code của e nó báo lỗi Variable ten is never read. Lỗi vậy là sao nhỉ. Mong các bác đi qua giúp đỡ. e code trên netbeans

1 Like

bạn đã thấy chữ “lỗi” ở đâu?

3 Likes

Nó báo dòng String ten = sc.nextLine();
Variable ten is never read.
Hình cái bóng đèn. Mình k biết có phải lỗi hay k nhưng nó hiện ra mình thấy bực mình

cuối cùng thì cũng không có từ khoá “lỗi” xuất hiện
bạn đã đọc hiểu thông báo lỗi chưa
theo bạn thì khi gặp vấn đề gì đó, người lâp trình cần làm gì? thông báo mà compiler hay ide trả ra để làm gì?

5 Likes

Mình dịch thì biến đó chưa bao giờ được đọc. Còn mình k hiểu vì sao netbeans lại có thông báo đó bên trái dòng code

theo bạn thì thông báo này có sai không?

2 Likes

không phải tất cả mọi thứ hiển thị ở log đều là lỗi đâu bạn.

5 Likes

Cột số dòng ấy. Dòng ý nó báo variable name is never read. Chắc nó k phải lỗi nhưng nó hiển thị thông báo khiến mình bực mình ấy

Chắc nó k sai mà có thể nó thừa. Hoặc nó có ý nghĩa gì mình k biết. Thế mới hỏi các bạn

Google dịch, dòng thông báo cũng khá rõ ràng, code cũng không phải quá nhiều đến mức không thể đọc được

2 Likes

Khi bạn khai báo biến, hệ điều hành sẽ cấp phát vùng nhớ và cho phép truy cập vùng nhớ qua tên biến. Với mỗi lần truy cập vùng nhớ, bạn có thể thao tác read/write data.
Ví dụ:
ten = sc.nextLine(); // một phép gán, tương đương thao tác write data

Theo bạn, trong trường hợp nào bạn sẽ thực hiện thao tác read data trên vùng nhớ của biến ten?
Từ khi bạn thực hiện phép gán (write data) trở đi, chương trình có thực hiện việc read data của biến ten không? Nếu có thì thực hiện ở đâu? Nếu không thì tại sao lại yêu cầu hệ điều hành cấp vùng nhớ?

Lỗi “Variable ten is never read” thật ra là lỗi ở level warning, là lúc hệ điều hành đang hỏi tương tự như trên: “Nếu không thì tại sao lại yêu cầu hệ điều hành cấp vùng nhớ?”

5 Likes

Bạn ra quán kêu một tô Phở rồi không ăn.

4 Likes

Hình như đó chỉ là warning thôi chứ nhỉ

2 Likes

vậy làm sao để tránh warning này. hay có thể tắt những cái warning k cần thiết k.
ten = sc.nextLine();
đây là 1 phép gán giá trị nhập vào cho tên.
tương đương với cin >> ten;
trong C++ hay scanf("%s", &ten); trong C thôi mà

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

cin >> ten;
// variable is never read

cin >> ten;
cout << ten;
// no warning

Bạn thử làm tương tự như cho source code Java của bạn, sau đó thử giải thích xem tại sao lỗi lại biến mất.

4 Likes

mình chưa biết cách làm warning biến mất

không code thì sẽ không có warning nữa
mình có cảm giác như bạn không hề động não hay suy nghĩ gì khi code, ít nhất là ở topic này cho thấy điều đó

4 Likes

để warning đó biến mất thì đơn giản là bạn chỉ cần thêm 1 dòng lệnh nữa dùng đến biến ten đó, ví dụ như hiển thị nội dung ra màn hình chẳng hạn.

3 Likes

Uhm, hoặc là @DucHung có thể xóa biến ten là được.

        Scanner sc = new Scanner(System.in);
        System.out.println("Nhập tên: ");
        sc.nextLine();

Về cơ bản, nếu cậu khai báo biến mà không dùng, compiler sẽ nhắc nhở (warning) cậu "biến này chưa bao giờ được đọc). Một cách logic, nếu cậu muốn warning này biến mất, cậu sử dụng nó (cách mà @htwap đã chỉ), hoặc xóa biến vô dụng ấy đi.
Cậu vẫn có thể compile chương trình khi gặp warning này và chạy được, cơ mà đừng ngạc nhiên nếu biến ten bị biến mất ở bytecode sau khi compile.
Cậu nhớ phân biệt warning với lỗi ở post sau nhé! :smile:

Hope it helps!

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