Egyéb

Mac 'String index out of range: 0' ...Valaki meg tudná mondani, hogy mi a baj? (Jáva)

Chase R

Eredeti plakát
2008. május 8
PDX
  • 2009. június 2
Nemrég fejeztem be ennek a programnak a megírását a java osztályomhoz. Ez egy egyszerű program, amely kiszámolja, mennyibe kerül egy kerítés felszerelése. A végén megkérdezi, hogy „szeretne-e újabb becslést készíteni (I/N)”, és a felhasználónak feltételeznie kell, hogy válasszon igent vagy nemet. Azonban miután befejeztem az enyém futtatását, nem fogom használni ezt a lehetőséget, csak ezt írja:

Másik becslés kiszámítása (I/N): Kivétel a 'main' szálban java.lang.StringIndexOutOfBoundsException: Karakterláncindex kívül esik a tartományon: 0
itt: java.lang.String.charAt (String.java:558)
itt: Test1.main(Test1.java:73)

Miért csinálja ezt!!!

A program egyébként itt van:

Kód: |_+_|

Littleodie914

2004. június 9


Rochester, NY
  • 2009. június 2
Hú, ez trükkös. Úgy tudtam működni, hogy az utolsó 'read.nextLine()'-t csak 'read.next()'-re változtattam, de egy kicsit közelebbről megnézem, miért nem működik elsőre.

Szerkesztés: Úgy tűnik, valami köze van a nextLine() metódushoz, amely a mutatót az aktuális soron túlra viszi. Jómagam nem nagyon értem, de ezek a linkek segíthetnek eloszlatni a zavart:

API szkenner
Kapcsolódó fórumbejegyzés

HiRez

2004. január 6
Nyugat-USA
  • 2009. június 2
Azt hiszem, ez a tied előző az olvasási hívások az újsor karaktert hagyják a billentyűzet beviteli pufferében. Ezért a nextLine() meghívásakor egy üres karakterláncot kapunk, ami ahhoz vezet, hogy a kivétel megpróbálja megvizsgálni a 0 pozícióban lévő karaktert, mivel ilyen nincs. Ez a probléma a konzol C bemeneti funkcióinál is előfordul. Valahogy valószínűleg először ki akarja öblíteni a puffert egy dummy read hívással vagy ilyesmivel. Régóta nem használom a Java-t, így nem tudom, mi lenne a helyes eljárás.

gnasher729

Felfüggesztett
2005. november 25
  • 2009. június 2
Chase R azt mondta: Most fejeztem be ennek a programnak a megírását a java osztályomhoz. Ez egy egyszerű program, amely kiszámolja, mennyibe kerül egy kerítés felszerelése. A végén megkérdezi, hogy „szeretne-e újabb becslést készíteni (I/N)”, és a felhasználónak feltételeznie kell, hogy válasszon igent vagy nemet. Azonban miután befejeztem az enyém futtatását, nem fogom használni ezt a lehetőséget, csak ezt írja:

Másik becslés kiszámítása (I/N): Kivétel a 'main' szálban java.lang.StringIndexOutOfBoundsException: Karakterláncindex kívül esik a tartományon: 0
itt: java.lang.String.charAt (String.java:558)
itt: Test1.main(Test1.java:73)

Miért csinálja ezt!!!

Mivel a forráskód megvan, valószínűleg egy programszerkesztőben, amivel sorszámokat lehet megjeleníteni, meg kell találnia, hol van a Test1.main fájl 73-as sora. Ez megmutatja, hol történik a probléma.

Most van egy kivétel, amely szerint a 0-s index „tartományon kívül van”. Ha egy n karakterből álló karakterláncot ér el, melyek az érvényes indexek?

Most meg tudja mondani, hogy pontosan melyik helyzetben nem érvényes a 0 index?

Ennek meg kell válaszolnia a kérdését.

SilentPanda

Moderátor emeritus
2002. október 8
A Bambusz Erdő
  • 2009. június 2
gnasher729 mondta: Mivel a forráskód megvan, valószínűleg egy programszerkesztőben, amely képes megjeleníteni a sorszámokat, meg kell találnia, hol van a Test1.main fájl 73-as sora. Ez megmutatja, hol történik a probléma.

A sor a következő:

Kód: |_+_|
közvetlenül azután, hogy megjelenik a „Másik becslés kiszámítása (I/N):”