Program dikompilasi tetapi tidak dijalankan

Ini adalah tugas yang harus saya selesaikan.

Bisakah seseorang membawa saya ke arah yang benar?

Program dikompilasi tetapi tidak berjalan dengan benar.

Kesalahannya adalah pengecualian InputMissmatch.


person TitanC    schedule 08.03.2013    source sumber
comment
Kesalahannya adalah pengecualian InputMissmatch. =› Pengecualian tersebut seharusnya mengarahkan Anda ke baris yang memunculkan pengecualian tersebut. Itu akan membantu Anda mempersempit cakupan penyelidikan Anda.   -  person assylias    schedule 08.03.2013
comment
Masukan apa yang Anda berikan? apakah Anda memberikan input sebagai A, B, C atau 0,1,2 dll?   -  person Pradeep Simha    schedule 08.03.2013
comment
sekarang adalah saat yang tepat untuk membiasakan diri dengan debugger Anda.   -  person radai    schedule 08.03.2013
comment
Tanpa membaca kode, jika Anda mendapatkan InputMissmatch, berarti Anda memasukkan sesuatu dari keyboard yang berbeda dengan tipe variabel yang Anda masukkan informasinya. Misalnya memasukkan karakter di kolom int.   -  person Kakalokia    schedule 08.03.2013
comment
Saya mencoba membuat pengguna memasukkan A,S,M,D,O atau E sebagai pilihan mereka, dan kemudian pernyataan if harus melakukan sisanya?   -  person TitanC    schedule 08.03.2013
comment
sekarang adalah saat yang tepat untuk membiasakan diri dengan berbagai primitif.   -  person Evan Knowles    schedule 08.03.2013
comment
Petunjuk: Anda meminta pengguna untuk memasukkan sebuah huruf, namun penetapan variabel pertama Anda dari pemindai menetapkan ke tipe float.   -  person tymeJV    schedule 08.03.2013
comment
jika Anda ingin pengguna memasukkan huruf yang Anda sebutkan, maka ubah dari tipe float ke tipe yang menerima huruf, misalnya String   -  person Kakalokia    schedule 08.03.2013
comment
Anda meminta pengguna memasukkan surat, dan membaca surat itu menggunakan nextFloat(). Bukankah sudah jelas bahwa hal itu akan menimbulkan pengecualian?   -  person JB Nizet    schedule 08.03.2013
comment
Saya masih belajar Java sepenuhnya jadi maafkan saya   -  person TitanC    schedule 08.03.2013
comment
Juga- mungkin hanya mendapatkan satu masukan dan memeriksa masukan yang mana, daripada menetapkan semua variabel ini.   -  person bjedrzejewski    schedule 08.03.2013
comment
Anda harus melakukan diagnosis lebih lanjut untuk pertanyaan semacam ini. Beri kami seluruh jejak tumpukan pengecualian, dan beri tahu kami nilai berbagai variabel pada titik terjadinya, serta input apa yang sedang diproses.   -  person millimoose    schedule 08.03.2013
comment
Selain itu, pertimbangkan untuk menyederhanakan contoh kode untuk mengisolasi kesalahan Anda. Yaitu. coba hapus semua kode sampai yang Anda miliki hanyalah yang diperlukan untuk menghasilkan kesalahan pada masukan yang diberikan.   -  person millimoose    schedule 08.03.2013
comment
Oke terima kasih atas semua saran, dan tipsnya. Saya sedang mengerjakannya.   -  person TitanC    schedule 08.03.2013


Jawaban (2)


Masalah Anda adalah Anda memasukkan surat ke dalam bidang float. Dalam program Anda, Anda meminta pengguna untuk memasukkan float:

A = hope.nextFloat();

Namun jika Anda memasukkan huruf "A", Anda akan mendapatkan pengecualian karena "A" bukanlah float, melainkan string.

Cara yang lebih sederhana untuk menyelesaikan masalah Anda adalah alih-alih memiliki semua bidang pilihan, Anda cukup membaca masukan yang dimasukkan pengguna dari pemindai seperti:

String choice = hope.next();

Berikutnya dalam pernyataan if, Anda memeriksa apakah nilai dari pilihan string sama dengan huruf tertentu, misalnya

if (choice.equals("A")) {
        number4 = (number1 + number2 + number3);
        System.out.printf("Your results are:" + (number4));
    } 

Dan Anda dapat melakukan hal yang sama untuk pilihan lain yang Anda miliki.

person Kakalokia    schedule 08.03.2013
comment
Saya melakukan ini, dan mengedit kodenya. Program berfungsi dengan baik sekarang. Perbaikan sederhana yang harus saya sadari. Saya masih belajar dan memikirkan banyak hal tentang apa yang harus saya lakukan. Terima kasih - person TitanC; 08.03.2013

Kesalahan yang Anda dapatkan berarti Anda mencoba menggunakan beberapa jenis data sebagai data lain, dalam kasus Anda, Anda mungkin mencoba menggunakan String sebagai float.

Saat menggunakan salah satu metode berikutnya di kelas Pemindai, pertama-tama Anda harus memastikan bahwa ada masukan yang sesuai dari pengguna.

Untuk melakukannya, Anda perlu menggunakan metode has.

Masalah Anda adalah Anda tidak memeriksa apakah inputnya adalah float yang benar atau tidak sebelum menggunakan Scanner.nextFloat();

Anda harus melakukan sesuatu seperti ini:

if (hope.hasNextFloat())
{
    // Code to execute when you have a proper float, 
    // which you can retrieve with hope.nextFloat()
}
else
{ 
    // Code to execute when the user input is not a float
    // Here you should treat it properly, maybe asking for new input
}

Itu seharusnya cukup untuk mengarahkan Anda ke arah yang benar.

Selain itu, periksa dokumentasi api Scanner untuk informasi lebih lanjut detail.

EDIT

Selain itu, Anda meminta pengguna untuk memasukkan karakter (atau string): "A", "B", dll..., tetapi Anda mencoba membandingkannya dengan float. Salah, sebaiknya bandingkan dengan string atau karakter, seperti ini:

if (hope.hasNextString())
{
   if (hope.nextString().equals("A"))
   {
       // Code for option "A"
   }
   else if (hope.nextString().equals("B"))
   {
       // Code for option "B"
   }
   else ...
}

Anda bisa menggunakan switch di sana, tapi sepertinya Anda belum terlalu familiar dengan java, jadi saya akan meninggalkannya untuk lain waktu.

person Héctor Luaces Novo    schedule 08.03.2013