Hallo,
ich bin im ersten Semester des Wirtschaftsinformatiks. Wir haben eine Aufgabe:
"Zwei leere Arrays sollen durch Einlesen von der Tastatur mit Strings gefüllt werden (die Größe
der Arrays wird ebenfalls eingelesen). Diese Arrays werden miteinander vereinigt. Danach soll
das neu entstandene Array alphabetisch sortiert werden. Ist dies erledigt, werden Duplikate aus
dem Array entfernt und das Resultat ausgegeben. Bei der Ausgabe werden die Worte aus dem
Array mit einem Leerzeichen getrennt."
Nun habe ich die Aufgabe wie folgt versucht zu lösen, aber ich bekomme bei der Eingabe des zweiten Arrays die Fehlermeldung "java.util.NoSuchElementException: No line found"
Mein Code:
[Java]public class ArraySpielerei {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Bitte geben Sie die Länge des 1.Arrays ein: ");
int n = scanner.nextInt();
String[] array1 = new String[n];
System.out.print("Bitte geben Sie die Länge des 2.Arrays ein: ");
int m = scanner.nextInt();
String[] array2 = new String[m];
System.out.println("1.Array: ");
array1 = readWords(n);
System.out.println("2.Array: ");
array2 = readWords(m);
String[] array = mergeWords(array1, array2);
array = sortWords(array);
array = removeDuplicates(array);
printArray(array);
scanner.close();
}
public static String[] readWords(int sizeOfArray) {
Scanner scanner = new Scanner(System.in);
String[] array = new String[sizeOfArray];
for (int i = 0; i < sizeOfArray; i++) {
System.out.println("Bitte geben Sie " + (i + 1) + ". Wort ein: ");
String words = scanner.nextLine();
array = words;
}
scanner.close();
return array;
}
public static String[] mergeWords(String[] words, String[] words2) {
String[] mergedWords = new String[words.length + words2.length];
int n = 0;
for (int i = 0; i < mergedWords.length; i++) {
if (i < words.length) {
mergedWords = words;
} else {
mergedWords = words2[n];
n++;
}
}
return mergedWords;
}
public static String[] sortWords(String[] toSort) {
Arrays.sort(toSort);
return toSort;
}
public static String[] removeDuplicates(String[] sortedWords) {
for (int i = 0; i < sortedWords.length; i++) {
String erstesWort = sortedWords;
for (int n = i + 1; n < sortedWords.length; n++) {
if (erstesWort.equals(sortedWords[n])) {
String[] sortedWords2 = new String[sortedWords.length - 1];
for (int m = 0; m < i; m++) {
sortedWords2[m] = sortedWords[m];
}
for (int m = i; m < sortedWords2.length; m++) {
sortedWords2[m] = sortedWords[m + 1];
}
return removeDuplicates(sortedWords2);
}
}
}
return sortedWords;
}
public static void printArray(String[] array){
for(int i=0; i<array.length; i++){
System.out.print(array + " ");
}
}
}
[/Java]
Die Fehlermeldung lautet wie folgt:
Exception in thread "main" Bitte geben Sie 1. Wort ein:
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1585)
at ArraySpielerei.readWords(ArraySpielerei.java:36)
at ArraySpielerei.main(ArraySpielerei.java:20)
Kann mir Bitte jemand helfen? Denn ich weiß nicht wie ich das ändern soll.
ich bin im ersten Semester des Wirtschaftsinformatiks. Wir haben eine Aufgabe:
"Zwei leere Arrays sollen durch Einlesen von der Tastatur mit Strings gefüllt werden (die Größe
der Arrays wird ebenfalls eingelesen). Diese Arrays werden miteinander vereinigt. Danach soll
das neu entstandene Array alphabetisch sortiert werden. Ist dies erledigt, werden Duplikate aus
dem Array entfernt und das Resultat ausgegeben. Bei der Ausgabe werden die Worte aus dem
Array mit einem Leerzeichen getrennt."
Nun habe ich die Aufgabe wie folgt versucht zu lösen, aber ich bekomme bei der Eingabe des zweiten Arrays die Fehlermeldung "java.util.NoSuchElementException: No line found"
Mein Code:
[Java]public class ArraySpielerei {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Bitte geben Sie die Länge des 1.Arrays ein: ");
int n = scanner.nextInt();
String[] array1 = new String[n];
System.out.print("Bitte geben Sie die Länge des 2.Arrays ein: ");
int m = scanner.nextInt();
String[] array2 = new String[m];
System.out.println("1.Array: ");
array1 = readWords(n);
System.out.println("2.Array: ");
array2 = readWords(m);
String[] array = mergeWords(array1, array2);
array = sortWords(array);
array = removeDuplicates(array);
printArray(array);
scanner.close();
}
public static String[] readWords(int sizeOfArray) {
Scanner scanner = new Scanner(System.in);
String[] array = new String[sizeOfArray];
for (int i = 0; i < sizeOfArray; i++) {
System.out.println("Bitte geben Sie " + (i + 1) + ". Wort ein: ");
String words = scanner.nextLine();
array = words;
}
scanner.close();
return array;
}
public static String[] mergeWords(String[] words, String[] words2) {
String[] mergedWords = new String[words.length + words2.length];
int n = 0;
for (int i = 0; i < mergedWords.length; i++) {
if (i < words.length) {
mergedWords = words;
} else {
mergedWords = words2[n];
n++;
}
}
return mergedWords;
}
public static String[] sortWords(String[] toSort) {
Arrays.sort(toSort);
return toSort;
}
public static String[] removeDuplicates(String[] sortedWords) {
for (int i = 0; i < sortedWords.length; i++) {
String erstesWort = sortedWords;
for (int n = i + 1; n < sortedWords.length; n++) {
if (erstesWort.equals(sortedWords[n])) {
String[] sortedWords2 = new String[sortedWords.length - 1];
for (int m = 0; m < i; m++) {
sortedWords2[m] = sortedWords[m];
}
for (int m = i; m < sortedWords2.length; m++) {
sortedWords2[m] = sortedWords[m + 1];
}
return removeDuplicates(sortedWords2);
}
}
}
return sortedWords;
}
public static void printArray(String[] array){
for(int i=0; i<array.length; i++){
System.out.print(array + " ");
}
}
}
[/Java]
Die Fehlermeldung lautet wie folgt:
Exception in thread "main" Bitte geben Sie 1. Wort ein:
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1585)
at ArraySpielerei.readWords(ArraySpielerei.java:36)
at ArraySpielerei.main(ArraySpielerei.java:20)
Kann mir Bitte jemand helfen? Denn ich weiß nicht wie ich das ändern soll.