รหัสอินพุตต่อเนื่องของ Java

เอาล่ะ โปรแกรมที่ฉันพยายามหาวิธีเขียนโค้ด (แก้ไขไม่ได้จริงๆ) ฉันต้องใช้ Java เพื่อยอมรับอินพุตต่อเนื่องจากผู้ใช้จนกว่าพวกเขาจะเข้าสู่จุด จากนั้นจะต้องคำนวณจำนวนอักขระทั้งหมดที่ผู้ใช้ป้อนจนถึงจุด

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!");
    }
}

กรุณาอย่าแนะนำให้ใช้ Scanner เนื่องจาก Java SE Platform ที่เราติดอยู่คือรุ่น SDK 1.4.2_19 และเราไม่สามารถอัปเดตได้ คำอธิบายวงเล็บปีกกาเปล่า: ผมคิดว่าถ้าใส่วงเล็บปีกกาเปล่าเข้าไปก็จะสามารถป้อนข้อมูลได้ต่อเนื่องจนกว่าจะใส่คาบ แต่ชัดเจนว่าไม่เป็นเช่นนั้น...

แก้ไข: อัปเดตรหัส ข้อผิดพลาดปัจจุบัน: จะไม่สิ้นสุดเมื่อ . ถูกป้อน


person Anthony Owen    schedule 27.05.2013    source แหล่งที่มา
comment
รหัสนั้นคัดลอกมาจาก dev IDE ของคุณด้วยอักขระ > ตัวเหล่านั้น ?   -  person AllTooSir    schedule 27.05.2013
comment
คุณอาจต้องการใช้ลูป (ในขณะที่/สำหรับ)   -  person BobTheBuilder    schedule 27.05.2013
comment
ดูคำตอบนี้สำหรับโซลูชันที่เปรียบเทียบได้: stackoverflow.com/a/16441949/714965   -  person Kai    schedule 27.05.2013


คำตอบ (1)


คุณต้องสลับคำสั่ง if/else ด้วย while

ตัวอย่าง :

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

หมายเหตุ: อย่าเปรียบเทียบค่าของวัตถุ String กับตัวดำเนินการ == ใช้วิธี equals()

หากคุณเพียงต้องการทดสอบว่าประโยคที่ผู้ใช้ป้อนมีสัญลักษณ์ . หรือไม่ คุณเพียงแค่ต้องเปลี่ยนจาก equals() เป็น contains() มันเป็นวิธีการในตัวจากคลาส java.lang.String

ตัวอย่าง:

 while (inputValues != null && !inputValues.contains(".")) {
    //do your stuff
 }
person Konstantin Yovkov    schedule 27.05.2013
comment
ขอบคุณสำหรับความช่วยเหลือ! มันใช้งานได้ แต่ตอนนี้ฉันแค่ต้องหาวิธีแก้ไขจุดบกพร่อง ดูเหมือนจะไม่ต้องการหยุดอ่านหากคุณใส่โค้ดไว้ในบรรทัดเดียว (IE: นี่คือประโยค) ฉันยังต้องการแบบจำลองที่จะอ่านหลายบรรทัดและคำนวณสิ่งเดียวกัน - person Anthony Owen; 27.05.2013
comment
น่าเศร้าที่ตอนนี้ฉันได้รับไม่สามารถแก้ไขสัญลักษณ์ ( while(!..contains(inputValues)) ) กำกับที่เครื่องหมายคำพูดแรกโดยระบุว่าเมธอดประกอบด้วย (java.lang.String) ฉันไม่รู้จัก Java ของฉันดีนัก :/ - person Anthony Owen; 27.05.2013
comment
ข้อผิดพลาดเดียวกัน ส่งตรงถึง .contains ทันที Java ทำไมคุณถึงทำ dis? - person Anthony Owen; 27.05.2013
comment
ไม่สามารถแก้ไขสัญลักษณ์ วิธีการประกอบด้วย (java.lang.String) ตำแหน่ง: class java.lang.String ในขณะที่ (inputValues ​​!= null && !inputValues.contains(.) ลูกศรบ่งชี้ที่พื้นที่ .contains(.) - person Anthony Owen; 27.05.2013
comment
โอ้ ใช่แล้ว วงเล็บปิดหายไป ) ตรงนั้น คัดลอกอีกครั้งและตอนนี้ก็ควรจะใช้งานได้ - person Konstantin Yovkov; 27.05.2013
comment
ฉันมีวงเล็บปิดในโค้ดอยู่แล้ว ฉันแน่ใจว่าจะใส่มันเข้าไป - person Anthony Owen; 27.05.2013
comment
โอเค สลับ inputValues.contains(".") เป็น inputValues.indexOf('.') == -1 - person Konstantin Yovkov; 27.05.2013
comment
คุณแน่ใจหรือว่าเป็น inputValues.indexOf('.') == -1 ? - person Konstantin Yovkov; 27.05.2013