Rumah > Java > javaTutorial > Mengapa Pengimbas Java Saya Membuang NoSuchElementException, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Pengimbas Java Saya Membuang NoSuchElementException, dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Lepaskan: 2024-12-05 15:03:14
asal
660 orang telah melayarinya

Why Does My Java Scanner Throw a NoSuchElementException, and How Can I Fix It?

Kekecewaan NoSuchElementException dengan Java.Util.Scanner

Menghadapi ralat "NoSuchElementException" boleh membingungkan, terutamanya untuk pemula Java seperti anda. Ralat ini berlaku apabila kelas Pengimbas tidak boleh mendapatkan semula token seterusnya daripada aliran input. Mari kita mendalami kod khusus anda untuk mendedahkan punca utama:

import java.util.Scanner;

public class Addition {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    int number1; // first number to add
    int number2; // second number to add
    int sum; // sum of 1 & 2

    // Problem: Reading input values without checking for input availability

    System.out.print("Enter First Integer: ");
    number1 = input.nextInt(); // Exception occurs here when no input is provided

    System.out.print("Enter Second Integer: ");
    number2 = input.nextInt(); // Exception occurs here if input is not available for this prompt

    sum = number1 + number2; // Addition occurs, assuming input values are available

    System.out.printf("Sum is %d\n", sum); // Displays the sum, if input is available
  }
}
Salin selepas log masuk

Masalahnya terletak pada kod yang cuba membaca input tanpa terlebih dahulu mengesahkan sama ada input tersedia. Kaedah input.nextInt() menimbulkan "NoSuchElementException" jika pengguna tidak memberikan input atau memasukkan sesuatu selain daripada integer.

Penyelesaian:

Untuk menghapuskan isu ini, kami perlu menyemak ketersediaan input sebelum cuba mendapatkan semula ia:

if (input.hasNextInt()) {
  number1 = input.nextInt();
} else {
  // Handle the case where no input is provided
}
Salin selepas log masuk

Penjelasan:

Kaedah hasNextInt() menyemak sama ada token seterusnya dalam aliran input ialah integer. Jika ia kembali benar, kaedah input.nextInt() boleh digunakan untuk mendapatkan semula integer. Jika tidak, kod itu boleh mengendalikan situasi dengan anggun, seperti menetapkan nombor1 kepada 0 atau memaparkan mesej ralat.

Dengan melaksanakan semakan ini, kod anda tidak lagi akan membuang "NoSuchElementException" dan akan berfungsi seperti yang diharapkan, membenarkan pengguna untuk memasukkan integer dan mengira jumlah mereka.

Atas ialah kandungan terperinci Mengapa Pengimbas Java Saya Membuang NoSuchElementException, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan