String „vertikal“ auf der Konsole ausgeben

stefani

Mitglied
Hallo,
Ich habe folgende Methode geschrieben.
Java:
public static   String druckeString(String[] s){
	
		for(int i = 1; i< s.length; i++)
			System.out.println(s.charAt[i]);
	}	

Ausgabe:
String sc.next();
	druckeVertikal(s);
um ein String vertikal auszugeben. zum Beispiel: Name
N
A
M
E

irgendwie klappt es leider nicht :-(
 

faetzminator

Gesperrter Benutzer
1. Warum startet [c]i[/c] bei 1? Indexe beginnen immer bei 0.
2. Warum willst du die Methode [c]charAt()[/c] mit eckigen Klammern aufrufen?

Btw:
Du könntest auch [c]toCharArray()[/c] verwenden, dann musst du nicht jedes Mal [c]charAt[/c] aufrufen. Und damit liesse sich erst noch eine for-each Schleife programmieren :)
 

stefani

Mitglied
So abgesehen von toCharArray.
Habe meine Methode, wei folgt geändert:
Java:
public static   String druckeString(String[] s){
    
        for(int i = 0; i< s.length; i++)
            System.out.println(s.charAt(i));
    }   
 


	public static void main (String[]args){
		

	String s = s.next();
	druckeString(s);
	}
}
geht immer noch nicht
 

faetzminator

Gesperrter Benutzer
1. Gem. deinem Beispiel heisst es [c]sc.next();[/c] und nicht [c]s.next();[/c].
2. Wo ist die Variable ([c]sc[/c]) überhaupt deklariert?
3. Es gibt kein Attribut [c]lenth[/c] bei einem String - nur eine Methode [c]lenth()[/c]

Btw, du solltest auch immer Klammern machen, auch wenn das Statement dahinter nur einzeilig ist.
Kannst du eigentlich keine Compilerfehler lesen? Der sagt dir genau das, was ich dir sage ;)
 

stefani

Mitglied
Danke für Antwort
. Gem. deinem Beispiel heisst es sc.next(); und nicht s.next(); .
2. Wo ist die Variable (sc ) überhaupt deklariert?
wir arbeiten mit ultraEdit und fürs Einlesen wurde eigene Methode geschrieben, weil diese hätte hier für Irratationen soregen könnte habe ich einfach so ersetzt.
sonst wird wie folgt gelesen:
Java:
String s = Tastatur.liesString();
Der code sieht nun so was:
Java:
public static   String druckeString(String [] s){
    
        for(int i = 0; i < s.length(); i++){
            System.out.println(s.charAt(i));
        }
    }   
 
	public static void main (String[]args){
		
		String s = Tastatur.liesString();
		druckeString(s);
	}
}
Sie Fehlermeldung ist ziemlich verwirrend :-(
 

faetzminator

Gesperrter Benutzer
Ow, da hat es ja noch mehr Fehler... bin anscheinend immer noch am schlafen :bahnhof:
bist du dir sicher, dass [c]druckeString()[/c]...
1. einen String zurückgeben soll?
2. der Parameter wirklich ein String-Array sein soll?
 

stefani

Mitglied
Meine Idee war dabei die Buchstaben in einem Array einzulesen, dann vertikal ausgeben.
Bin nun nicht ganzs icher, ob solche Operationen mit Array möglich wäre.
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
Du übergibst aber einen String, und erwartest auch einen String ;) Es gibt nur zwei sinnvolle Möglichkeiten: Entweder soll man [c]String[/c] oder [c]char[][/c] übergeben.
 

MarderFahrer

Gesperrter Benutzer
Meine Idee war dabei die Buchstaben in einem Array einzulesen, dann vertikal ausgeben.
Bin nun nicht ganzs icher, ob solche Operationen mit Array möglich wäre.

Sicherlich ist sowas mit einem Strin gArray möglich, aber dein ganzes Programm ist bereits so geschrieben, dass es mit Strings arbeitet. Was passiert, wenn du anstelle von
Java:
String [] s
in Zeile 1
Java:
String s
schreibst?
 

stefani

Mitglied
ich nun
Java:
String []
entfernt und bisschen noch angepasst und schon funktioniert es:D

Ich bedanke mich ganz herzlichst bei Euch
 

MarderFahrer

Gesperrter Benutzer
Bitte bitte. Wie faetzminator schon gesagt hat, kann zusätzlich auch noch der return der druckeString Methode weggelassen werden, da diese Methode ja bereits die Ausgabe erledigt. Keinen Grund, dass diese Methode dann auch noch etwas zurückgibt.

btw, mir war langweilig und da hab ich damit ein wenig rumgespielt und wenn man eine kleine Methode hinzufügt und den Code etwas anpasst kommt da folgendes heraus:
Code:
S u p e r 
u u
p   p
e     e
r       r

Die Methode(n):
Java:
	private static String addSpaces(int count, char value){
		String stringWithAddedSpaces = Character.toString(value);
		for(int i = 0; i < count; i++){
			stringWithAddedSpaces = stringWithAddedSpaces + " ";
		}
		return stringWithAddedSpaces;
	}
	
	public static void druckeString(String s){
        for(int i = 0; i < s.length(); i++){
        	if(i == 0){
        		for(int j = 0; j < s.length(); j++){
        			System.out.print(s.charAt(j) + " ");
        		}
        		System.out.println();
        	}else if (i == 1){
        		System.out.println(addSpaces(i, s.charAt(i)) + s.charAt(i));
        	}else{
        		System.out.println(addSpaces(i+i-1, s.charAt(i)) + s.charAt(i));
        	}
        }
    }

Zum starten einfach:
Java:
	public static void main(String[] args) {
		druckeString("Super");
	}
 

faetzminator

Gesperrter Benutzer
Um nochmals auf die for-each Schleife zurückzukommen (- damit du dieses schöne Teil auch kennenlernst)...:
Du hast nun eine Methode, welche warscheinlich etwa so aussieht:
Java:
public static void druckeString(String s) {
    for (int i = 0; i < s.length(); i++) {
        System.out.println(s.charAt(i));
    }
}
mit der for-each Schleifen kannst du über Klassen, welche [c]Iterable[/c] implementieren (wie Listen etc) oder Arrays iterieren. Mit [c]String.toCharArray()[/c] bekommt du ein [c]char[][/c], also optimal für die Schleife. Dann kannst du so was schickes machen - ganz ohne Index:
Java:
public static void druckeString(String s) {
    for (char c : s.toCharArray()) {
        System.out.println(c);
    }
}
 

Neue Themen


Oben