Cits

Mac 'String index out of range: 0' ...Vai kāds var man pateikt, kas šeit ir nepareizi? (Java)

Čeiss R

Oriģinālais plakāts
2008. gada 8. maijs
PDX
  • 2009. gada 2. jūnijs
Es tikko pabeidzu rakstīt šo programmu savai java klasei. Tā ir vienkārša programma, kas aprēķina, cik maksā žoga uzstādīšana. Beigās tiek jautāts: “Vai vēlaties veikt citu aprēķinu (J/N)”, un lietotājam ir jāizvēlas jā vai nē. Tomēr pēc tam, kad būšu pabeidzis darbināt savu, es nesaņemšu šo iespēju, tā vienkārši saka:

Aprēķināt citu aprēķinu (J/N): izņēmums pavedienā “main” java.lang.StringIndexOutOfBoundsIzņēmums: virknes indekss ārpus diapazona: 0
vietnē java.lang.String.charAt (String.java:558)
vietnē Test1.main (Test1.java:73)

Kāpēc tas tā dara!!!

Šeit, starp citu, ir programma:

Kods: |_+_|

Littleodie914

2004. gada 9. jūnijs


Ročestera, NY
  • 2009. gada 2. jūnijs
Oho, tas ir sarežģīti. Es to panācu, mainot jūsu pēdējo 'read.nextLine()' uz tikai 'read.next()', taču es paskatīšos mazliet tuvāk, lai noskaidrotu, kāpēc tas nedarbojas pirmajā veidā.

Rediģēt: Šķiet, ka tam ir kāds sakars ar nextLine() metodi, kas virza rādītāju tālāk par pašreizējo līniju. Es pats to tik ļoti nesaprotu, taču šīs saites var palīdzēt novērst neskaidrības:

API skeneris
Saistītā foruma ziņa

HiRez

2004. gada 6. janvāris
Rietumu ASV
  • 2009. gada 2. jūnijs
Es uzminēšu, ka tas ir viens no taviem iepriekšējā lasīšanas zvani atstāj jaunas rindiņas rakstzīmi tastatūras ievades buferī. Tāpēc, izsaucot nextLine(), tiek parādīta tukša virkne, kas noved pie izņēmuma, mēģinot pārbaudīt rakstzīmi pozīcijā 0, jo tādas nav. Tā ir arī problēma ar daudzām konsoles ievades C funkcijām. Kaut kā jūs, iespējams, vēlaties vispirms izskalot buferi ar fiktīvu lasīšanas zvanu vai kaut ko citu. Es ilgu laiku neesmu lietojis Java, tāpēc nezinu, kāda būtu pareizā procedūra.

gnasher729

Apturēts
2005. gada 25. novembris
  • 2009. gada 2. jūnijs
Čeiss R teica: Es tikko pabeidzu rakstīt šo programmu savai java klasei. Tā ir vienkārša programma, kas aprēķina, cik maksā žoga uzstādīšana. Beigās tiek jautāts: “Vai vēlaties veikt citu aprēķinu (J/N)”, un lietotājam ir jāizvēlas jā vai nē. Tomēr pēc tam, kad būšu pabeidzis darbināt savu, es nesaņemšu šo iespēju, tā vienkārši saka:

Aprēķināt citu aprēķinu (J/N): izņēmums pavedienā “main” java.lang.StringIndexOutOfBoundsIzņēmums: virknes indekss ārpus diapazona: 0
vietnē java.lang.String.charAt (String.java:558)
vietnē Test1.main (Test1.java:73)

Kāpēc tas tā dara!!!

Tā kā jums ir pirmkods, iespējams, programmas redaktorā, kurā var parādīt rindu numurus, jums vajadzētu būt iespējai atrast, kur atrodas faila Test1.main 73. rindiņa. Tas parādīs, kur rodas problēma.

Tagad jums ir izņēmums, kas saka, ka indekss 0 ir 'ārpus diapazona'. Ja piekļūstat virknei ar n rakstzīmēm, kādi ir derīgie indeksi?

Vai varat precīzi pateikt, kurā situācijā indekss 0 nav derīgs rādītājs?

Tam vajadzētu atbildēt uz jūsu jautājumu.

SilentPanda

Moderators emeritus
2002. gada 8. oktobris
Bambusa mežs
  • 2009. gada 2. jūnijs
gnasher729 teica: Tā kā jums ir avota kods, iespējams, programmas redaktorā, kurā var parādīt rindu numurus, jums vajadzētu būt iespējai atrast, kur atrodas faila Test1.main 73. rindiņa. Tas parādīs, kur rodas problēma.

Līnija ir:

Kods: |_+_|
uzreiz pēc tam, kad tiek parādīts “Aprēķināt citu aplēsi (J/N):”