Lỗi khi sử dụng scanner trong java: NoSuchElementException


trong ảnh là lỗi ạ; dưới là code , e không hiểu sao đến lần gọi hàm nhập thứ 2 đến chỗ đọc n thì nó văng ra lỗi mn jup e vs

package dssv;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;


public class Main {
	public static void nhap() throws IOException
	{
		Scanner sc= new Scanner(System.in);
		
		File f= new File("danhsach1.txt");
		FileOutputStream fo =null;
		ObjectOutputStream oo=null;
		if(!f.exists())
		{
			f.createNewFile();
			fo= new FileOutputStream(f);
			oo =new ObjectOutputStream(fo);
		}else
		{
			fo= new FileOutputStream(f,true);
			oo =new ObjectOutputStream(fo) {
				protected void writeStreamHeader() throws IOException
				{
					reset();
				}
			};
		}
		int n=0;
		SinhVien sv= new SinhVien();
		System.out.println("nhap so sv muon nhap:");
		n=Integer.parseInt(sc.nextLine());

		for(int i =0 ; i<n;i++)
		{
			String name;
			int id;
			System.out.println("ten:");
			name=sc.nextLine();
			sv.setName(name);
			System.out.println("id:");
			id =sc.nextInt();
			sc.nextLine();
			sv.setId(id);
			System.out.println("---------------");
			oo.writeObject(sv);
		}
		sc.close();
		fo.close();
	}
	
	public static void doc()
	{
		try {
			FileInputStream fi =new FileInputStream("danhsach1.txt");
			ObjectInputStream oi =new ObjectInputStream(fi);
			SinhVien sv= null;
			try {
				do {
					sv= (SinhVien)oi.readObject();
					System.out.println("ten:"+sv.getName());
					System.out.println("id:"+sv.getId());
				}while(sv!=null);
			}catch(Exception e)
			{
				System.out.println("end!");
				System.out.println(e);
			}finally {
				fi.close();
			}
		}catch(Exception e)
		{
			System.out.println("file chua ton tai!");
			System.out.println(e);
		}
		
	}
	public static void main(String[] args) throws IOException {
		
		int x= 0;
		nhap();
		doc();
		nhap();
		doc();
		
		
	}
}

Sao k nextInt luôn mà phải parse lại nhỉ?

3 Likes

mình thử nextInt rồi bạn , mình cả intterget lun rồi mà lỗi vẫn vậy
lỗi ko có trong exo mới đau chứ

Chuyển dòng này ra ngoài phương thức nhap() (khai báo toàn cục).

Bạn đang để nhiều Scanner cùng can thiệp vào một đối tượng System.in.

5 Likes

ok ban m hiu r
!!!

import java.util.Scaner;

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */

/*
 *
 * @author Hawin
 */
 public class NhapDuLieuTuBanPhim {
    public static void main(String[] args) {
       /* String hoten = "PhamThu";
        int tuoi = 21;
        System.out.println("" + hoten + "nam nay" + tuoi + "tuoi"); // println: in có xuống dòng
        System.out.print("" + hoten + "nam nay" + tuoi + "tuoi");   // print: in ko xuống dòng
        System.out.println("\n");
        System.out.printf("%s nam nay %d tuoi",hoten,tuoi);  // tương tự như C     
		*/
        Scanner sc = new Scanner(System.in);
        System.out.println("Nhap ho ten:");
        String hoTen = sc.nextLine();
        System.out.println("Nhap tuoi");
        int tuoi = sc.nextInt();
        
        System.out.println("Nhap ma SV:");
        String maSV = sc.nextLine();
        System.out.println("Nhap diem:");
        float diem = sc.nextFloat();
        System.out.println("======Xuat======");
        System.out.println("Ho ten :" + hoTen);
        System.out.println("Tuoi:" + tuoi);
        System.out.println("Ma SV:" + maSV);
        System.out.println("Diem:"+ diem);
    }
}

mình không biết bị lỗi gì mong admin sửa giúp ạ

bạn sửa lại chỗ import “Scanner” chứ k phải “Scaner” nhé

sau khi nextInt() thì bạn cần thêm 1 dòng ngay sau đó là nextLine() thì mới nhập được mã sv nextLine() nhé. Nếu k nó sẽ skip đọc xuống chỗ nhập điểm luôn, lí do thì b tham khảo ở đây nhé: https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-or-nextfoo

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