2012-10-18 17 views
7

मैं एक सबस्ट्रिंग बनाने की कोशिश कर रहा हूं जो मुझे उपनाम के 6 अक्षरों तक पहुंचने देता है, हालांकि मेरे यहां जो कुछ है, वह एक त्रुटि को फेंकने लगता है जब इसे कम से कम का उपनाम मिलता है 6 पत्र, मुझे कोई सफलता के साथ एक समाधान के लिए घंटों के लिए तलाश कर दिया गया है:/जावा में सबस्ट्रिंग - एक मान तक की लंबाई

id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,6).toLowerCase(); 
System.out.print ("Here is your ID number: " + id); 

यह .substring(0,6) है। मैं इसे जरूरत अप को 6 अक्षर बिल्कुल नहीं 6.

त्रुटि होने के लिए:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6 
    at java.lang.String.substring(Unknown Source) 
    at Test.main(Test.java:27) 

उत्तर

30

उपयोग

secondName.substring (0, Math.min(6, secondName.length())) 
+5

+1 स्मार्ट जवाब ... –

+0

धन्यवाद! यह अब काम किया है मुझे इसे समझने की जरूरत है! :) – user1756421

+0

'Math.min (6, secondName.length()) ''''' '_NNN.Length()> 6' है, यह दूसरे मामले में' secondName.length() 'है। –

0

हालांकि आप त्रुटि नहीं प्रदान की थी, यह बहुत आसान था समस्या को पहचानना:

id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,6<secondName.length()?6:secondName.length).toLowerCase(); 
System.out.print ("Here is your ID number: " + id); 

संपादित यह अधिक पठनीय हो सकता है:

id = firstName.substring (0,1).toLowerCase() + (6<secondName.length()?secondName.substring(0,6):secondName).toLowerCase(); 
System.out.print ("Here is your ID number: " + id); 
2

मैं

secondName.length > 6 ? secondName.substring(0, 6) : secondName 
0

आप एक java.lang.StringIndexOutOfBoundsException हो रही हो जाएगा पसंद करते हैं।

आपको यह सुनिश्चित करने की आवश्यकता है कि लंबाई हमेशा स्ट्रिंग लंबाई से कम है।

int len = Math.min(6, secondName.length()); 
String id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,len).toLowerCase(); 
1

कुछ इस तरह एक समाधान हो सकता है: उपनाम के चेक लंबाई और उसके अनुसार तय

if (secondName.length() >6) 
id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,6).toLowerCase(); 
else 
id = firstName.substring (0,1).toLowerCase() + secondName.substring (0,secondName.length()).toLowerCase(); 

System.out.print ("Here is your ID number: " + id); 
संबंधित मुद्दे