Başka

Mac 'Dize dizini aralık dışında: 0' ...Birisi bana burada neyin yanlış olduğunu söyleyebilir mi? (Java)

kovalamaca

Orijinal afiş
8 Mayıs 2008
PDX
  • 2 Haz 2009
Java dersim için bu programı yazmayı yeni bitirdim. Bir çit kurmanın maliyetini hesaplayan basit bir programdır. Sonunda, 'başka bir tahminde bulunmak ister misiniz (E/H)' diye sorar ve kullanıcının evet veya hayır'ı seçmesi gerekir. Ancak, benimkini çalıştırmayı bitirdikten sonra bu seçeneği alamayacağım, sadece şöyle diyor:

Başka Bir Tahmin Hesapla (E/H): 'main' iş parçacığında özel durum Java.lang.StringIndexOutOfBoundsException: Dize dizini aralık dışında: 0
java.lang.String.charAt'ta (String.java:558)
Test1.main'de(Test1.java:73)

Bunu neden yapıyor!!!

Bu arada program şu:

Kod: |_+_|

Littleodie914

9 Haz 2004


Rochester, NY
  • 2 Haz 2009
Vay, bu zor. Son 'read.nextLine()' inizi sadece 'read.next()' olarak değiştirerek çalışmasını sağladım, ancak neden ilk şekilde çalışmadığını görmek için biraz daha yakından bakacağım.

Düzenlemek: İşaretçiyi geçerli satırın ötesine taşıyan nextLine() yöntemiyle bir ilgisi var gibi görünüyor. Kendim pek anlamıyorum, ancak bu bağlantılar biraz kafa karışıklığını gidermeye yardımcı olabilir:

API Tarayıcı
İlgili Forum Yazısı

HiRez

6 Ocak 2004
Batı ABD
  • 2 Haz 2009
sizinkilerden biri olduğunu tahmin edeceğim öncesi okuma aramaları klavye giriş arabelleğinde yeni satır karakterini bırakıyor. Bu nedenle, nextLine() öğesini çağırdığınızda, boş bir dize elde edersiniz, bu da hiçbir karakter olmadığı için 0 konumundaki karakteri incelemeye çalışan istisnaya yol açar. Bu aynı zamanda birçok konsol girişi C işleviyle ilgili bir sorundur. Her nasılsa, muhtemelen önce boş bir okuma çağrısı veya başka bir şeyle arabelleği temizlemek istersiniz. Java'yı uzun zamandır kullanmadım, bu yüzden doğru prosedürün tam olarak ne olacağını bilmiyorum.

gnasher729

Askıya alındı
25 Kasım 2005
  • 2 Haz 2009
Chase R dedi ki: Java dersim için bu programı yazmayı yeni bitirdim. Bir çit kurmanın maliyetini hesaplayan basit bir programdır. Sonunda, 'başka bir tahminde bulunmak ister misiniz (E/H)' diye sorar ve kullanıcının evet veya hayır'ı seçmesi gerekir. Ancak, benimkini çalıştırmayı bitirdikten sonra bu seçeneği alamayacağım, sadece şöyle diyor:

Başka Bir Tahmin Hesapla (E/H): 'main' iş parçacığında özel durum Java.lang.StringIndexOutOfBoundsException: Dize dizini aralık dışında: 0
java.lang.String.charAt'ta (String.java:558)
Test1.main'de(Test1.java:73)

Bunu neden yapıyor!!!

Kaynak koduna sahip olduğunuz için, muhtemelen satır numaralarını görüntülemek için yapılabilecek bir program düzenleyicide, Test1.main dosyasında satır 73'ün nerede olduğunu bulabilmelisiniz. Bu size sorunun nerede olduğunu gösterecektir.

Şimdi, 0 indeksinin 'aralık dışı' olduğunu söyleyen bir istisnanız var. n karakterli bir dizeye erişirseniz, geçerli dizinler nelerdir?

Şimdi bize tam olarak hangi durumda indeks 0'ın geçerli bir indeks olmadığını söyleyebilir misiniz?

Bu, sorunuza cevap vermeli.

sessizPanda

fahri moderatör
8 Ekim 2002
Bambu Ormanı
  • 2 Haz 2009
gnasher729 dedi ki: Kaynak koduna sahip olduğunuz için, muhtemelen satır numaralarını görüntülemek için yapılabilecek bir program düzenleyicide, Test1.main dosyasında satır 73'ün nerede olduğunu bulabilmelisiniz. Bu size sorunun nerede olduğunu gösterecektir.

satır:

Kod: |_+_|
'Başka Bir Tahmin Hesapla (E/H):' görüntülendikten hemen sonra