ఇతర

Mac 'స్ట్రింగ్ ఇండెక్స్ పరిధి వెలుపల ఉంది: 0' ...ఇక్కడ తప్పు ఏమిటో ఎవరైనా నాకు చెప్పగలరా? (జావా)

చేజ్ ఆర్

ఒరిజినల్ పోస్టర్
మే 8, 2008
PDX
  • జూన్ 2, 2009
నేను నా జావా క్లాస్ కోసం ఈ ప్రోగ్రామ్ రాయడం పూర్తి చేసాను. ఇది కంచెని ఇన్స్టాల్ చేయడానికి ఎంత ఖర్చవుతుందో లెక్కించే ఒక సాధారణ ప్రోగ్రామ్. ముగింపులో, ఇది 'మీరు మరొక అంచనా (Y/N) చేయాలనుకుంటున్నారా' అని అడుగుతుంది మరియు వినియోగదారు అవును లేదా కాదు అని ఎంచుకోవలసి ఉంటుంది. అయినప్పటికీ, నేను గనిని అమలు చేసిన తర్వాత, నేను ఆ ఎంపికను పొందలేను, ఇది ఇలా చెప్పింది:

మరొక అంచనాను లెక్కించండి (Y/N): థ్రెడ్ 'మెయిన్' java.langలో మినహాయింపు.StringIndexOutOfBoundsException: స్ట్రింగ్ ఇండెక్స్ పరిధి వెలుపల ఉంది: 0
java.lang.String.charAt వద్ద (String.java:558)
Test1.main వద్ద(Test1.java:73)

ఎందుకు ఇలా చేస్తోంది!!!

మార్గం ద్వారా ప్రోగ్రామ్ ఇక్కడ ఉంది:

కోడ్: |_+_|

లిట్లోడీ914

జూన్ 9, 2004


రోచెస్టర్, NY
  • జూన్ 2, 2009
వావ్, అది గమ్మత్తైనది. మీ చివరి 'read.nextLine()'ని కేవలం 'read.next()'కి మార్చడం ద్వారా నేను పని చేసాను, అయితే ఇది మొదటి మార్గంలో ఎందుకు పని చేయదో తెలుసుకోవడానికి నేను కొంచెం దగ్గరగా చూస్తాను.

సవరించు: ప్రస్తుత రేఖకు మించి పాయింటర్‌ను ముందుకు తీసుకెళ్లే nextLine() పద్ధతితో దీనికి ఏదైనా సంబంధం ఉన్నట్లు కనిపిస్తోంది. నాకే అది అంతగా అర్థం కాలేదు, కానీ ఈ లింక్‌లు కొంత గందరగోళాన్ని క్లియర్ చేయడంలో సహాయపడవచ్చు:

API స్కానర్
సంబంధిత ఫోరమ్ పోస్ట్

హైరెజ్

జనవరి 6, 2004
పశ్చిమ యు.ఎస్
  • జూన్ 2, 2009
నేను మీలో ఒకటి ఊహించబోతున్నాను మునుపటి రీడ్ కాల్‌లు కీబోర్డ్ ఇన్‌పుట్ బఫర్‌లో కొత్త లైన్ అక్షరాన్ని వదిలివేస్తున్నాయి. అందువల్ల, మీరు nextLine()కి కాల్ చేసినప్పుడు, మీకు ఖాళీ స్ట్రింగ్ వస్తుంది, ఇది 0 స్థానం వద్ద అక్షరాన్ని పరిశీలించడానికి మినహాయింపుకు దారితీస్తుంది, ఎందుకంటే ఏదీ లేదు. ఇది చాలా కన్సోల్ ఇన్‌పుట్ C ఫంక్షన్‌లలో కూడా సమస్యగా ఉంది. ఏదో ఒకవిధంగా మీరు డమ్మీ రీడ్ కాల్ లేదా మరేదైనా ముందుగా బఫర్‌ను ఫ్లష్ చేయాలనుకుంటున్నారు. నేను చాలా కాలంగా జావాను ఉపయోగించలేదు కాబట్టి సరైన విధానం ఖచ్చితంగా ఏమిటో నాకు తెలియదు.

gnasher729

సస్పెండ్ చేయబడింది
నవంబర్ 25, 2005
  • జూన్ 2, 2009
చేస్ R ఇలా అన్నాడు: నేను నా జావా క్లాస్ కోసం ఈ ప్రోగ్రామ్‌ని వ్రాయడం పూర్తి చేసాను. ఇది కంచెని ఇన్స్టాల్ చేయడానికి ఎంత ఖర్చవుతుందో లెక్కించే ఒక సాధారణ ప్రోగ్రామ్. ముగింపులో, ఇది 'మీరు మరొక అంచనా (Y/N) చేయాలనుకుంటున్నారా' అని అడుగుతుంది మరియు వినియోగదారు అవును లేదా కాదు అని ఎంచుకోవలసి ఉంటుంది. అయినప్పటికీ, నేను గనిని అమలు చేసిన తర్వాత, నేను ఆ ఎంపికను పొందలేను, ఇది ఇలా చెప్పింది:

మరొక అంచనాను లెక్కించండి (Y/N): థ్రెడ్ 'మెయిన్' java.langలో మినహాయింపు.StringIndexOutOfBoundsException: స్ట్రింగ్ ఇండెక్స్ పరిధి వెలుపల ఉంది: 0
java.lang.String.charAt వద్ద (String.java:558)
Test1.main వద్ద(Test1.java:73)

ఎందుకు ఇలా చేస్తోంది!!!

మీరు సోర్స్ కోడ్‌ని కలిగి ఉన్నందున, బహుశా ప్రోగ్రామ్ ఎడిటర్‌లో లైన్ నంబర్‌లను ప్రదర్శించడానికి తయారు చేయవచ్చు, మీరు Test1.main ఫైల్‌లో లైన్ 73 ఎక్కడ ఉందో కనుగొనగలరు. సమస్య ఎక్కడ జరుగుతుందో అది మీకు చూపుతుంది.

ఇప్పుడు మీకు 0 సూచిక 'పరిధిలో లేదు' అని చెప్పే మినహాయింపు ఉంది. మీరు n అక్షరాలతో స్ట్రింగ్‌ని యాక్సెస్ చేస్తే, చెల్లుబాటు అయ్యే సూచికలు ఏమిటి?

ఇప్పుడు మీరు ఖచ్చితంగా ఏ పరిస్థితిలో ఇండెక్స్ 0 చెల్లుబాటు అయ్యే సూచిక కాదని మాకు చెప్పగలరా?

అది మీ ప్రశ్నకు సమాధానం ఇవ్వాలి.

సైలెంట్ పాండా

మోడరేటర్ ఎమెరిటస్
అక్టోబర్ 8, 2002
వెదురు అడవి
  • జూన్ 2, 2009
gnasher729 చెప్పారు: మీరు సోర్స్ కోడ్‌ని కలిగి ఉన్నందున, బహుశా ప్రోగ్రామ్ ఎడిటర్‌లో లైన్ నంబర్‌లను ప్రదర్శించడానికి తయారు చేయవచ్చు, మీరు Test1.main ఫైల్‌లో లైన్ 73 ఎక్కడ ఉందో కనుగొనగలరు. సమస్య ఎక్కడ జరుగుతుందో అది మీకు చూపుతుంది.

లైన్ ఇది:

కోడ్: |_+_|
అది 'మరో అంచనాను లెక్కించు (Y/N):' ప్రదర్శించిన వెంటనే