hi,
ich hab nur ein kleines Problem. Trotzdem erläter ich mal alles damit ihr mit klar kommt was ich vor habe. Also ich hab ein 2 Dim char[][] in dem ein Text gespeichert ist.So diesen hab ich dann vertikal abgelesen und in einem ArrayList gespeichert.Soweit so gut.
Nun hab ich in meiner Liste sowas stehen a,s,d,[],s,a,d,s,[],d . Ich möchte jetzt diese Leeren [] rauss nehmen. Ich bin jetzt sovorgeganen.
public static StringBuilder geheimTextFull(ArrayList<Objekt> liste,
String schluessel, String klartext) {
ArrayList<Character> tempAusgabe = new ArrayList<Character>();
tempAusgabe = geheimText(liste, schluessel);
StringBuilder sb = new StringBuilder();
char c = ' ';//geht nicht
for (int i = 0; i < klartext.length(); i++) {
if (tempAusgabe.get(i) == c) {//geht nicht
} else {
sb.append(tempAusgabe.get(i));
}
}
return sb;
}
char c = ' ';//geht nicht
Doch, das geht. Oder was für eine Fehlermeldung bekommst du?
if (tempAusgabe.get(i) == c) {//geht nicht
Geht schon, macht aber wohl nicht das was du willst Nicht-primitive Datentypen (und Character als Klasse ist solch einer) vergleicht man per equals.
Was sind das für “Dinger” oben sprichst Du von einem char[][] das gar keine Leerzeichen enthält. Im code ist eine Liste aus der Leerzeichen entfernt bzw. nicht übertragen werden sollen?
weil ich kein plann hab warum das nicht läuft. ein boolean wird erwartet also muss != oder == eingebaut werden die aber was soll die wheil-schleife ausführen
Ich hab dir mal ein kleines selbst Laufendes Beispiel erstellt, dass die wichtigen Punkte hervorhebt. Das remove(’ ') macht tatsächlich Probleme, weil hier ein Character statt char erwartet wird. So funktioniert es aber
import java.util.ArrayList;
public class RemoveSpace{
public static void main(String[] args){
//Args in Liste von Chars einlesen
List<Character> tempAusgabe = new ArrayList<>();
for(char c: args[0].toCharArray()){
tempAusgabe.add(c);
}
//Leerzeichen entfernen aus Liste von Chars
Character SPACE = ' ';
while(tempAusgabe.remove(SPACE));
//Liste von Chars ohne Leerzeichen in StringBuffer schreiben
StringBuilder sb = new StringBuilder();
for(char c: tempAusgabe){
sb.append(c);
}
System.out.println(sb);
}
}```
Ergibt folgende Ausgabe:
$ java RemoveSpace “Das ist ein Test”
DasisteinTest
Es wird mir ja als [] angezeigt . Wieso liegt einfach dadran das ich z.b ein char[] array = new char [3]. Ich hab aber nur 2 Elemente eingefügt . Die restlichen werden mir als [] oder keine Ahnung was angezeigt.
hier so was kommt bei mir rauss :
|114|110|101|114|0|101|103|110|102|0|105|114|115|114|116|100|101|117|108|0|110|115|112|116|0|110|118|101|111|0|101|100|116|109|0|116|101|97|101|0|102|110|116|110|0|102|117|101|105|0
kann es sein, dass es sich gar nicht um Klammern handelt, die Du da siehst?
ASCII 0 ist kein Buchstabe der Rest scheint ja im Bereich der Kleinbuchstaben zu liegen. Du musst also diese Zeichen bzw. 0 aus Deiner List entfernen - keine Ahnung wie das da rein kommt (Vielleicht beim Verschlüsseln in geheimText(…)?). Weder hat das was mit Leerzeichen, Klammern und vermutlich auch nichts mit Arrays zu tun.
Weil ja auch keine 0 als Character sondern nur als Wert vorkommt.
Der Code ist mir zu wirr und zu mühsam durch zu schauen, aber vermutlich würde ein ...space = (char)0; schon ausreichen.