# Text einruecken



## Freaky123 (20. Jun 2010)

Also ich hab verschiedene Woerter die ich in eine Datei ausgeben soll und dabei muss aber eine bestimmte einruecken durchgefuehrt werde:


```
startprog
        for 10 do left 20
                if firstvariable do up 30
                endif
                if secondvariable do right 40 + 30
                endif
        endfor
endprog
```

Man sollte das ganze aber nicht direkt in die Ausgabe implementieren also mit System.out.print("/t/t/t...");


----------



## Java-Freak (20. Jun 2010)

*edit: ausversehen auf antworten geklickt unds nicht gemerkt...


----------



## Java-Freak (20. Jun 2010)

du hast doch vor der ausgabe nen string mit \n drinnen.
du könnest doch doch diesen string spliten
	
	
	
	





```
stringName.split("\n")
```
dann vor die entsprechenden zeilen das \t einfügen also
	
	
	
	





```
stringName = "\t"+ stringName
```
und dann die einzelnen array einträge wieder zu einem string zusammenfügn den du in die datei schreibst
dabei musst du halt auf den richtigen umgang mit dem array von split achten


----------



## Freaky123 (20. Jun 2010)

Sorry aber ich versteh nicht ganz wie du das meinst...
Also momentan hab ich:


```
public static void writeIntent() {

           LinkedList<Token> list = new LinkedList<Token>();
           Iterator<Token>  iter = list.Iterator();

           while(iter.hasNext()) {                 //Bei den verschiedenen if Bediengungen sollte eben geschaut werden ob eine Einrueckung stattfindet oder nicht...
                        if(tmp.equals("startprog")) {
				out.printf("%s ", tmp);
			}
			else if(tmp.equals("for") || tmp.equals("if")) { 
					out.printf("%n %1$10s ", tmp);
			}
			else if(tmp.equals("endif") || tmp.equals("endfor")) {
				out.printf("%n %1$20s ", tmp);
			}
			else if(tmp.equals("endprog")) out.printf("%n %s ", tmp);
			else out.printf("%1$s ", tmp);
		}
           }
}

public class Token() {
      
       public String output() {
       return "token";           //verschiedene woerter
       }
}
```


----------



## Java-Freak (21. Jun 2010)

```
FileWriter fw = new FileWriter("testFileForParser.txt");
		fw.write("startprog\nfor 10 do left 20\nif firstvariable do up 30\nendif\nif secondvariable do right 40 + 30\nendif\nendfor\nendprog");
		fw.close();
		String s, b;
		int deep = 0;
		LinkedList<String> ll = new LinkedList<String>();
		Scanner sc = new Scanner(new File("testFileForParser.txt"));
		while (sc.hasNextLine()){
			ll.add(sc.nextLine());
		}
		for( int i = 0;i <= ll.size()-1; i++ ){
			System.out.println(ll.get(i));
			s = ll.get(i);
			b = s;
			for ( int o = 0 ; o <= deep-1; o++){
				s =  "\t"+s;
				ll.set(i,s);	
			}
			if(b.startsWith("start")||b.startsWith("if")||b.startsWith("for")){deep++;}
			else if(b.startsWith("end")){deep--;}
			else{
				throw new IllegalArgumentException("Error in Code");
			}
			
		}
		System.out.println("-------");
		for (String u : ll){
			System.out.println(u);
		}
```
schau dir mal das hier an.
die einrückung ist noch nicht perfekt und das ganze wird nicht wieder in die datei geschrieben aber das prinzip dürfte klar sein...


----------

