Lỗi không gọi được phương thức trong class java

Phần main

package B4_xaydunglop;
import java.util.Scanner;
public class Main {
    public static void title(){
        System.out.print("ten chu xe \t loai xe \t tri gia \t");
        System.out.print(" dung tich \t thue \n");
        System.out.print("-----------------------------------");
        System.out.print("-------------------\n");
    }
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Menu lua chon cac cong viec:");
        System.out.println("1.Nhap va tao danh sach cac xe");
        System.out.println("2.Xuat bang ke khai tien thue");
        System.out.println("3.Thoat");
        System.out.println("Hay nhap su lua chon cua ban:");
        Scanner sc=new Scanner(System.in);
        int choise= sc.nextInt();
        Dangkixe[] xe = new Dangkixe[100];
        switch(choise){
            case 1 -> {
                System.out.println("Nhap so luong xe:"); 
                int n=sc.nextInt();
                System.out.println("Nhap DS xe:"); 
                for(int i=1;i<=n;++i){
                    System.out.println("Nhap xe thu"+i); 
                    xe[i].nhapthongtin();
                }
                System.out.println("Hien thi DS xe:"); 
                title();
                for(int i=0;i<n;++i){
                    xe[i].outdata();
                }
            }
        }
    }   
}

Phần bên class

package B4_xaydunglop;
import java.util.Scanner;
public class Dangkixe {
    long trigia;
    float thue;
    int dungtich;
    String tenchuxe,loaixe;
    void nhapthongtin(){
        Scanner sc= new Scanner(System.in);
        System.out.println("Nhap ten chu xe: ");
        tenchuxe=sc.nextLine();
        System.out.println("Nhap loai xe: ");
        loaixe=sc.nextLine();
        System.out.println("Nhap tri gia xe: ");
        trigia=sc.nextLong();
        System.out.println("Nhap dung tich xe: ");
        dungtich=sc.nextInt();
    }
    void outdata(){
        System.out.print(tenchuxe+"\t"+loaixe+"\t"+trigia+"\t");
        System.out.print(dungtich+"\t"+thue+"\n");
    }
    float tinhthue(){
        if(dungtich>0 && dungtich<100) thue= trigia*0.01f;
        if(dungtich>=100 && dungtich<=200) thue=trigia*0.03f;
        if(dungtich>200) thue=trigia*0.05f;
        return thue;
    }
}

Phần kết quả


Em không hiểu sao chạy đến đấy thì nó bị lỗi, anh chị giúp em với

Có liên quan đến:

Ờ thì thông báo nó báo có Scanner đấy!

Do bạn tạo nhiều Scanner cùng tác động vào System.in dẫn đến System.in bị đóng bởi 1 Scanner bất kì (Scanner thực hiện trước).
Giải pháp: Chỉ tạo 1 Scanner tĩnh (static) để gọi/dùng chung.

2 Likes

mình bỏ thử và để static Scanner trong main thì nó báo lỗi nhiều hơn :((

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