Друго

Mac 'String index out of range: 0' ...Някой може ли да ми каже какво не е наред тук? (Java)

Чейс Р

Оригинален плакат
8 май 2008 г
PDX
  • 2 юни 2009 г
Току-що приключих с писането на тази програма за моя java клас. Това е проста програма, която изчислява колко струва инсталирането на ограда. Накрая той пита „бихте ли искали да направите друга оценка (Да/Не)“ и потребителят трябва да избере да или не. Въпреки това, след като приключа с моя, няма да получа тази опция, просто пише:

Изчислете друга оценка (Y/N): Изключение в нишката 'main' java.lang.StringIndexOutOfBoundsException: Индекс на низ извън диапазона: 0
на java.lang.String.charAt (String.java:558)
в Test1.main(Test1.java:73)

Защо прави това!!!

Ето програмата между другото:

Код: |_+_|

Littleodie914

9 юни 2004 г


Рочестър, Ню Йорк
  • 2 юни 2009 г
Уау, това е трудно. Накарах го да работи, като промених последния ви 'read.nextLine()' на просто 'read.next()', но ще погледна малко по-отблизо, за да видя защо не работи по първия начин.

Редактиране: Изглежда, че има нещо общо с метода nextLine(), който придвижва показалеца извън текущия ред. Аз самият не го разбирам толкова много, но тези връзки може да помогнат за изчистване на малко объркване:

API скенер
Свързана публикация във форума

HiRez

6 януари 2004 г
Западна САЩ
  • 2 юни 2009 г
Предполагам, че един от вашите предишен read повикванията оставят символа за нов ред в буфера за въвеждане на клавиатурата. Следователно, когато извикате nextLine(), получавате празен низ, което води до изключение, което се опитва да провери символ на позиция 0, тъй като няма такъв. Това също е проблем с много от входните C функции на конзолата. Някак си вероятно искате първо да прочистите буфера с фиктивно повикване за четене или нещо подобно. Не съм използвал Java от много време, така че не знам каква точно би била правилната процедура.

gnasher729

Суспендиран
25 ноември 2005 г
  • 2 юни 2009 г
Chase R каза: Току-що приключих с писането на тази програма за моя java клас. Това е проста програма, която изчислява колко струва инсталирането на ограда. Накрая той пита „бихте ли искали да направите друга оценка (Да/Не)“ и потребителят трябва да избере да или не. Въпреки това, след като приключа с моя, няма да получа тази опция, просто пише:

Изчислете друга оценка (Y/N): Изключение в нишката 'main' java.lang.StringIndexOutOfBoundsException: Индекс на низ извън диапазона: 0
на java.lang.String.charAt (String.java:558)
в Test1.main(Test1.java:73)

Защо прави това!!!

Тъй като имате изходния код, вероятно в програмен редактор, който може да бъде направен да показва номера на редове, трябва да можете да намерите къде е ред 73 във файла Test1.main. Това ще ви покаже къде се случва проблемът.

Сега имате изключение, което казва, че индекс от 0 е „извън обхвата“. Ако имате достъп до низ с n знака, кои са валидните индекси?

Сега можете ли да ни кажете в коя точно ситуация индексът 0 не е валиден индекс?

Това трябва да отговори на въпроса ви.

SilentPanda

Почетен модератор
8 октомври 2002 г
Бамбуковата гора
  • 2 юни 2009 г
gnasher729 каза: Тъй като имате изходния код, вероятно в програмен редактор, който може да бъде накаран да показва номера на редове, трябва да можете да намерите къде е ред 73 във файла Test1.main. Това ще ви покаже къде се случва проблемът.

линията е:

Код: |_+_|
веднага след като се покаже „Изчислете друга оценка (Y/N):“