जैसा प्रतीत होता है मुझे एक जावा प्रोग्राम के साथ एक छोटी सी समस्या है। मैं एक InsertionSort एल्गोरिदम करने की कोशिश कर रहा हूं, लेकिन यह स्ट्रिंग को परिवर्तित करने में समस्या है जो प्रोग्राम stdin के माध्यम से हो जाता है। यह कार्यक्रम की तरह लगता है कुछ संख्या के साथ काम कर रहा है, लेकिन यह इन नंबरों के साथ काम नहीं करता है:स्ट्रिंग के लिए संख्याफॉर्मेट अपवाद जो
public class Sort {
private static ArrayList<String> insertionSort(ArrayList<String> arr) {
for (int i = 1; i < arr.size(); i++) {
int valueToSort = Integer.parseInt(arr.get(i).trim());
int j = i;
while (j > 0 && Integer.parseInt(arr.get(j - 1).trim()) > valueToSort) {
arr.set(j, arr.get(j-1));
j--;
}
arr.set(j, Integer.toString(valueToSort));
}
return arr;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<String> al;
String inputNumbers = sc.nextLine();
String[] xs = inputNumbers.split(" ");
al = new ArrayList<String>(Arrays.asList(xs));
al = insertionSort(al);
for (int i = 0; i<al.size(); i++) {
System.out.print(al.get(i) + " ");
}
}
}
यह कुछ संख्या के साथ काम करता है, लेकिन यह है कि मैं फ़ाइलों के साथ नहीं: https://dl.dropboxusercontent.com/u/57540732/numbers.txt
यह मेरा एल्गोरिथ्म है आपको प्रदान किया गया मुझे निम्नलिखित अपवाद मिलते हैं:
Exception in thread "main" java.lang.NumberFormatException: For input string: "4531"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at Sort.insertionSort(Sort.java:10)
at Sort.main(Sort.java:25)
मुझे नहीं पता कि मुझे यह अपवाद क्यों मिलता है, क्योंकि इनपुट स्ट्रिंग एक संख्या (4531) है। कोई सुझाव? मैं कॉपी कर सकते हैं नहीं और टर्मिनल के लिए फ़ाइल से संख्या के अल पेस्ट, इसलिए मैं इस आदेश का उपयोग कर रहा:
javac Sort.java
java Sort < numbers.txt
मुझे लगता है कि समस्या nextLIne() –
स्कैनर वर्ग एक विधि nextInt() और hasNextInt (कहा जाता है) के साथ है। शायद आपको एक पूर्णांक में स्ट्रिंग पार्सिंग के बजाय उनका उपयोग करने का प्रयास करना चाहिए। – abekenza