Kode Input Berkelanjutan Java

Oke, jadi program yang saya coba cari tahu cara codingnya (belum benar-benar memperbaiki), saya harus menggunakan Java untuk menerima input terus menerus dari pengguna hingga memasuki suatu titik. Kemudian harus menghitung total karakter yang dimasukkan pengguna hingga periode tersebut.

import java.io.*;
class ContinuousInput
{
    public static void main(String[] args) throws IOException
    {
    InputStreamReader inStream = new InputStreamReader (System.in);
    BufferedReader userInput = new BufferedReader (inStream);
    String inputValues;
    int numberValue;
    System.out.println("Welcome to the input calculator!");
    System.out.println("Please input anything you wish: ");

    inputValues = userInput.readLine();

    while (inputValues != null && inputValues.indexOf('.')) {
    inputValues = userInput.readLine();
    }
    numberValue = inputValues.length();
    System.out.println("The total number of characters is " + numberValue + ".");

    System.out.println("Thank you for using the input calculator!");
    }
}

Mohon jangan menyarankan penggunaan Pemindai, Platform Java SE yang kami gunakan adalah model SDK 1.4.2_19 dan kami tidak dapat memperbaruinya. Penjelasan kurung kurawal kosong: Saya pikir jika saya memasukkan kurung kurawal kosong itu akan memungkinkan input terus menerus sampai titik dimasukkan, tapi yang jelas bukan itu masalahnya...

Sunting: Kode yang diperbarui Kesalahan Saat Ini: tidak akan berakhir ketika . dimasukkan.


person Anthony Owen    schedule 27.05.2013    source sumber
comment
Kode itu disalin dari IDE dev Anda dengan > karakter itu?   -  person AllTooSir    schedule 27.05.2013
comment
Anda mungkin ingin menggunakan loop (sementara/untuk)   -  person BobTheBuilder    schedule 27.05.2013
comment
Lihat jawaban ini untuk solusi yang sebanding: stackoverflow.com/a/16441949/714965   -  person Kai    schedule 27.05.2013


Jawaban (1)


Anda harus mengganti pernyataan if/else dengan while.

Sampel :

inputValues = userInput.readLine();
while (!".".equals(inputValues) {
   //do your stuff
   //..and after done, read the next line of the user input.
   inputValues = userInput.readLine();
}

Catatan: Jangan pernah membandingkan nilai objek String dengan operator ==. Gunakan metode equals().

Jika Anda hanya ingin menguji apakah kalimat yang dimasukkan pengguna mengandung simbol ., Anda tinggal beralih dari equals() ke contains(). Ini adalah metode bawaan dari kelas java.lang.String.

Sampel:

 while (inputValues != null && !inputValues.contains(".")) {
    //do your stuff
 }
person Konstantin Yovkov    schedule 27.05.2013
comment
Terima kasih untuk bantuannya! Ini berhasil, tetapi sekarang saya hanya perlu memikirkan cara men-debugnya. Tampaknya tidak ingin berhenti membaca jika Anda meletakkan kode dalam satu baris (IE: ini sebuah kalimat.). Saya juga memerlukan model yang dapat membaca banyak baris dan menghitung hal yang sama. - person Anthony Owen; 27.05.2013
comment
Sayangnya, sekarang saya mendapatkan simbol tidak dapat menyelesaikan ( while(!..contains(inputValues)) ) diarahkan pada kutipan pertama, yang menyatakan bahwa metode tersebut berisi (java.lang.String). Sejujurnya saya tidak begitu paham Java saya. :/ - person Anthony Owen; 27.05.2013
comment
Kesalahan yang sama, diarahkan ke .contains sekarang. Java, kenapa kamu melakukan ini? - person Anthony Owen; 27.05.2013
comment
Tidak Dapat Menyelesaikan Simbol, Metode Berisi (java.lang.String), Lokasi: kelas java.lang.String, sementara (inputValues ​​!= null && !inputValues.contains(.), panah menunjuk ke area .contains(.). - person Anthony Owen; 27.05.2013
comment
Oh iya, ada tanda kurung tutup ) yang hilang disana. Salin lagi dan sekarang seharusnya berfungsi. - person Konstantin Yovkov; 27.05.2013
comment
Saya sudah memiliki tanda kurung tutup di kodenya. Saya memastikan untuk memasukkannya ke dalam. - person Anthony Owen; 27.05.2013
comment
oke, ganti inputValues.contains(".") dengan inputValues.indexOf('.') == -1 - person Konstantin Yovkov; 27.05.2013
comment
Apakah Anda yakin itu inputValues.indexOf('.') == -1 ? - person Konstantin Yovkov; 27.05.2013