Printf nutzen

chk1102

Aktives Mitglied
Hallo Zusammen,

ich möchte gern bei Eingabe von einem String, der 6 Wörter beinhaltet, das System.out so gestalten, dass für jede Zeile 2x Wörter ausgegeben werden.
Wie krieg ich das hin?

Java:
package Proggen1_2;

import java.util.Arrays;

public class S32 {

	/**
	 * @param args
	 */
	int kurz = 3;
	static int mittel = 6;
	static int lang = 8;
	
	public static int prüfen (String s) {
		String array[] = s.split(" ");
		for (int i = 0; i < array.length; i++) {
			array[i].trim();
		}
		//System.out.println(array.length);
		return array.length;
	}
	
	public static void kurz (String s) {
		String array[] = s.split(" ");
		for (int i = 0; i < array.length; i++) {
			array[i].trim();
			System.out.printf("\n%1s", array[i]);
		}
	}
	
	public static void mittel (String s) {
		String array[] = s.split(" ");
		for (int i = 0; i < array.length; i++) {
			array[i].trim();
			System.out.printf("\n%2s", array[i], array[i+1]);
		}
	}
	
	public static void lang (String s) {
		String array[] = s.split(" ");
		for (int i = 0; i < array.length; i++) {
			array[i].trim();
			System.out.printf("\n%3s", array[i]);
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		System.out.println("Bitte gib einen Satz von mindestens 3 Wörtern ein:");
		String str = EAM.rString();
		switch (prüfen(str)) {
		case 3:
			kurz(str);
			break;
		case 6:	
			mittel(str);
			break;
		case 8:
			lang(str);
			break;
			default: System.out.println("Das wars!");
				
		}
		
		
	}

}

Noch eine andere Frage: Warum kann ich die Instanzvariablen kurz, mittel und lang unterschiedlich nutzen? Also int kurz = 3; und static int mittel = 6;
Wo ist der Unterschied von den beiden Variablen?
 
Code:
static
bedeutet, dass diese Variable für die gesamte Klasse nur einmal auftaucht.
Wenn du also zwei Instanzen hast, dann hat bei nicht-statischen Elementen jede eine eigene Variable. Statische Variablen sind für _alle_ Instanzen gültig. Man nennt sie deshalb auch Klassenvariablen.
Java:
S32 s1 = new S32();
S32 s2 = new S32();
s1.kurz = 44;
System.out.println(s2.kurz); // 3
s1.mittel = 55; // Compiler sollte hier eine Warnung geben - statischer Kontext
//S32.mittel = 55; hat den gleichen Effekt!
System.out.println(s2.mittel); // 55
 
Zuletzt bearbeitet:
Vielen Dank für die Erklärung.
Wie bekomme ich das hin, dass mir das Prog bspw. bei 6 Wörtern dann 3 Zeilen mit zwei Wörtern ausgibt und meinetwegen diese auch noch gesperrt sind? Gesperrt: G e s p e r r t

Ich habs noch mal anders versucht..
Java:
public static void kurz (String s) {
		String eins = null;
		String array[] = s.split(" ");
		for (int i = 0; i < array.length; i++) {
			array[i].trim();
			for (int j = 0; j<array.length; j++) {
				eins = array[1];			
				System.out.print(eins.charAt(i+1) + " ");

			}
			System.out.printf("\n%1s", array[i]);
		}
	}
Nicht so wie ich möchte :noe:
 
Musst du es mit printf machen?
Ich würde folgendes benutzen:
Java:
public static void print(String s) {
    String[] arr = s.split(" ");
    System.out.print(arr[0]);
    for( int i=1; i < arr.length; i++ ) {
        if( i % 2 == 0 )
            System.out.println();
        System.out.print(arr[i]);
    }
}
 
hm.. klappt nich so ganz
Die Methode print gibt dann einmal den Gesamten String ARray aus direkt hintereinander.

Mit Printf wäre es sinnvoll zu wissen wie es funktioniert.
 
Java:
public static void print(String s) {
	String[] arr = s.split( " " );
	
	for( int i = 0; i < arr.length; i++ ) {
		System.out.print( arr[ i ] );
		System.out.print( " " );
		if( ( i + 1 ) % 2 == 0 )
			System.out.println();
	}
}
 

Zurück
Oben