Hallo, ich hätte eine Frage und zwar haben wir eine Aufgabe bekommen, wo wir ein String eingeben und danach soll jedes zweite Wort 'reversed' werden. Und es soll danach wieder der String mit den ursprünglichen Leerzeichen und Satzzeichen zurückgegeben werden.
z.B
the call translate(" this is a silly program .")
must return " this si a yllis program ."
Ich habe das versucht mit LinkedList zu implementieren Soweit mein code :
Meine Idee war verschiedene LinkedList zu erstellen und danach am ende alles zusammenfügen. Sorry wenn die variablen teils englisch und deutsch benannt sind ... bin gerade beim ausprobieren. Ich schaff aber leider nicht am ende einen LinkedList mit sen ursprünglichen Leerzeichen zu erstellen. Also keine Ahnung wie ich das alles richtig zusammenfügen kann.
z.B
the call translate(" this is a silly program .")
must return " this si a yllis program ."
Ich habe das versucht mit LinkedList zu implementieren Soweit mein code :
Java:
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Arrays;
import java.io.*;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class translateString //implements Assignment2
{
public static void main(String [] args){
@SuppressWarnings("resource")
Scanner inputText = new Scanner(System.in);
System.out.println("Your input text:");
while(true){
String input=inputText.nextLine();
if(checkInput(input))
/*for(int w:translate(input)){
System.out.println(w);
} */
System.out.println(translate(input));
else
System.out.println("String did not match");
}
}
public static String translate(String s) {
LinkedList<Integer> linkedlist = new LinkedList<Integer>();
int counter = 0; //Wörter in Array speichern
char[] string = s.toCharArray();
// int [] posLeerzeichen = new int [string.length];
for (int i = 0, n = string.length; i < n; i++) {
if(string[i]== ' ')
linkedlist.add(i);
}
LinkedList<String> words = new LinkedList<String>();
String[] array = s.trim().split("\\s+"); //mit split() findets die Wörter
//String [] wörter= new String [array.length];
@SuppressWarnings("unchecked")
LinkedList<String> arrays = new LinkedList(Arrays.asList(array));
for (int i=0;i< arrays.size();i++) { // Array durchgehen und jedes zweite wort in ein anderes Array speichern
if(i % 2 == 1)
words.add(arrays.get(i));
/*else
wörter[i] = "leer"; */
}
LinkedList <String> reversed = new LinkedList <String> ();
for (int i=0; i< words.size();i++) {
reversed.add(reverse(words.get(i)));
//reversed[i]= reverse(wörter[i]);
}
int j=0;
LinkedList <String> end = new LinkedList <String>();
/* for (int i=0; i< linkedlist.size(); i++) {
end.add(linkedlist.get(i), " ");
} */
for(int i=0; i<arrays.size();i++) {
if(i%2 == 1)
end.add(i, reversed.getFirst());
else
end.add(i, arrays.getFirst() );
/* if (i == linkedlist.get(i))
// array[i] = reversed [i];
end.add(" ");
*/
}
String formattedString = arrays.toString()
.replace(",", "") //remove the commas
.replace("[", "") //remove the right bracket
.replace("]", "") //remove the left bracket
.trim(); //remove trailing spaces from partially initialized arrays
return formattedString;
}
public static String reverse (String s) {
String reverse="";
for ( int i = s.length()-1 ; i >= 0 ; i-- )
// if(s.charAt(i)=='.') {
reverse = reverse + s.charAt(i);
return reverse;
//System.out.println("Reverse of entered string is: "+reverse);
}
public static boolean checkInput(String s){
/*Pattern pattern = Pattern.compile("^[A-Za-z ]+[\\.]{1}$");
Matcher matcher = pattern.matcher(s);
return matcher.find();*/
return Pattern.compile("^[A-Za-z ]+[\\.]{1}$").matcher(s).find();
}
}
Meine Idee war verschiedene LinkedList zu erstellen und danach am ende alles zusammenfügen. Sorry wenn die variablen teils englisch und deutsch benannt sind ... bin gerade beim ausprobieren. Ich schaff aber leider nicht am ende einen LinkedList mit sen ursprünglichen Leerzeichen zu erstellen. Also keine Ahnung wie ich das alles richtig zusammenfügen kann.