อื่น

Mac 'ดัชนีสตริงอยู่นอกช่วง: 0' ...มีใครช่วยบอกฉันทีว่าเกิดอะไรขึ้นที่นี่ (ชวา)

Chase R

โปสเตอร์ต้นฉบับ
8 พฤษภาคม 2551
PDX
  • 2 มิ.ย. 2552
ฉันเพิ่งเขียนโปรแกรมนี้สำหรับคลาส java ของฉันเสร็จ เป็นโปรแกรมง่ายๆ ที่คำนวณค่าใช้จ่ายในการติดตั้งรั้ว ในตอนท้ายจะถามว่า 'คุณต้องการประมาณการอื่นหรือไม่ (ใช่/ไม่ใช่)' และผู้ใช้ควรเลือกใช่หรือไม่ใช่ อย่างไรก็ตาม หลังจากที่ฉันดำเนินการเสร็จสิ้น ฉันจะไม่ได้รับตัวเลือกนั้น มันบอกว่า:

คำนวณค่าประมาณอื่น (ใช่/ไม่ใช่): ข้อยกเว้นในเธรด 'main' java.lang.StringIndexOutOfBoundsException: ดัชนีสตริงอยู่นอกช่วง: 0
ที่ java.lang.String.charAt (String.java:558)
ที่ Test1.main(Test1.java:73)

ทำไมมันทำแบบนี้!!!

นี่คือโปรแกรมโดยวิธีการ:

รหัส: |_+_|

Littleodie914

9 มิ.ย. 2547


โรเชสเตอร์ นิวยอร์ก
  • 2 มิ.ย. 2552
ว้าวที่ยุ่งยาก ฉันทำให้มันใช้งานได้โดยเปลี่ยน 'read.nextLine()' ล่าสุดของคุณเป็น 'read.next()' แต่ฉันจะดูให้ใกล้ขึ้นอีกนิดเพื่อดูว่าเหตุใดจึงไม่ทำงานในวิธีแรก

แก้ไข: ดูเหมือนว่าจะมีบางอย่างเกี่ยวกับเมธอด nextLine() ที่เลื่อนตัวชี้ออกไปนอกบรรทัดปัจจุบัน ฉันไม่เข้าใจตัวเองมากขนาดนั้น แต่ลิงก์เหล่านี้อาจช่วยให้เกิดความสับสนขึ้นเล็กน้อย:

เครื่องสแกน API
กระทู้ที่เกี่ยวข้อง

HiRez

6 ม.ค. 2547
อเมริกาตะวันตก
  • 2 มิ.ย. 2552
ฉันจะเดาว่าหนึ่งในของคุณ ก่อนหน้า การเรียกอ่านจะทิ้งอักขระขึ้นบรรทัดใหม่ไว้ในบัฟเฟอร์อินพุตของแป้นพิมพ์ ดังนั้น เมื่อคุณเรียก nextLine() คุณจะได้รับสตริงว่าง ซึ่งนำไปสู่ข้อยกเว้นที่พยายามตรวจสอบอักขระที่ตำแหน่ง 0 เนื่องจากไม่มี นี่เป็นปัญหากับฟังก์ชัน C อินพุตคอนโซลจำนวนมาก อย่างใดคุณอาจต้องการล้างบัฟเฟอร์ก่อนด้วยการเรียกอ่านจำลองหรือบางอย่าง ฉันไม่ได้ใช้ Java มาเป็นเวลานาน ดังนั้นฉันจึงไม่รู้ว่าขั้นตอนที่ถูกต้องเป็นอย่างไร

gnasher729

ถูกระงับ
25 พ.ย. 2548
  • 2 มิ.ย. 2552
Chase R กล่าวว่า: ฉันเพิ่งเขียนโปรแกรมนี้สำหรับคลาส java ของฉันเสร็จ เป็นโปรแกรมง่ายๆ ที่คำนวณค่าใช้จ่ายในการติดตั้งรั้ว ในตอนท้ายจะถามว่า 'คุณต้องการประมาณการอื่นหรือไม่ (ใช่/ไม่ใช่)' และผู้ใช้ควรเลือกใช่หรือไม่ใช่ อย่างไรก็ตาม หลังจากที่ฉันดำเนินการเสร็จสิ้น ฉันจะไม่ได้รับตัวเลือกนั้น มันบอกว่า:

คำนวณค่าประมาณอื่น (ใช่/ไม่ใช่): ข้อยกเว้นในเธรด 'main' java.lang.StringIndexOutOfBoundsException: ดัชนีสตริงอยู่นอกช่วง: 0
ที่ java.lang.String.charAt (String.java:558)
ที่ Test1.main(Test1.java:73)

ทำไมมันทำแบบนี้!!!

เนื่องจากคุณมีซอร์สโค้ด ซึ่งน่าจะอยู่ในโปรแกรมแก้ไขโปรแกรมที่สามารถสร้างให้แสดงหมายเลขบรรทัด คุณควรจะสามารถค้นหาว่าบรรทัด 73 ในไฟล์ Test1.main อยู่ตรงไหน ที่จะแสดงให้คุณเห็นว่าปัญหาเกิดขึ้นที่ใด

ตอนนี้คุณมีข้อยกเว้นที่ระบุว่าดัชนี 0 คือ 'อยู่นอกช่วง' หากคุณเข้าถึงสตริงที่มีอักขระ n ตัว ดัชนีที่ถูกต้องคืออะไร

คุณช่วยบอกเราได้ไหมว่าในสถานการณ์ใดที่ดัชนี 0 ไม่ใช่ดัชนีที่ถูกต้อง

ที่ควรตอบคำถามของคุณ

หมีแพนด้า

กิตติคุณผู้ดำเนินรายการ
8 ต.ค. 2545
ป่าไผ่
  • 2 มิ.ย. 2552
gnasher729 กล่าวว่า: เนื่องจากคุณมีซอร์สโค้ดซึ่งอาจอยู่ในโปรแกรมแก้ไขโปรแกรมที่สามารถสร้างให้แสดงหมายเลขบรรทัดได้ คุณควรจะสามารถค้นหาได้ว่าบรรทัด 73 ในไฟล์ Test1.main อยู่ที่ใด ที่จะแสดงให้คุณเห็นว่าปัญหาเกิดขึ้นที่ใด

บรรทัดคือ:

รหัส: |_+_|
ทันทีที่มันแสดง 'คำนวณค่าประมาณอื่น (ใช่/ไม่ใช่):'