# Stack/Queue: Datei einlesen, bearbeiten, Datei ausgeben



## MrSpelf (19. Mai 2011)

Hallo,
ich würde gerne mittels einem Stack oder Queue Programm eine Datei einlesen die bearbeiten, z.b. sortieren oder so was in der Richtung und diese dann wieder als Datei ausgeben. Aber wie mache ich das? Hab das Forum schon durchsucht aber nix brauchbares gefunden . Ist wichtig, da ich morgen ne Klausur drüber schreib. Danke schonmal =). 
mfg

Das wäre das Queue:


```
import java.io.IOException;
import java.util.Scanner;

public class Queue {

		int q[];
		int head = 0;
		int tail = 0;
		int size;
		boolean underflow = false;
		boolean overflow = false;
		
		public Queue (int size){
			this.size = size;
			q = new int[size];
		}
		
		public void put (int a){
			overflow = (tail+1)%size == head;
				if(!overflow){
					q[tail] = a;
					tail = (tail+1);
				}
		}
		
		public int get(){
			if(!underflow){
				int a = q[head];
				head = (head+1);
				return a;
			}
			else return -1;			
		}

		public static void main (String args [])throws IOException{
			//args[0] Größe des Stacks übergeben
			
			Queue mQ = new Queue(Integer.parseInt(args[0]));			
			Scanner sc = new Scanner(System.in);			
			int b = 1;	
			
			
			while( b == 1 || b == 2){
				System.out.println("1 - get \n2 - put");
				int auswahl = sc.nextInt();	
				b = auswahl;
				switch(auswahl){
					
					case 1:
						System.out.println("Zahl ist: " + mQ.get());
						break;
					case 2:
						System.out.println("Geben sie eine Zahl ein: ");
						mQ.put(sc.nextInt());
						break;					
					default: 
						System.out.println("Programm beendet");
						break;
					}
				}
			
			
		}
		
}
```

und das die Stack: 


```
package Verwaltung;

public class Stack {
	//Datenfeld

	Artikel s[];
	int lenght;
	int merker;
	boolean overflow;
	boolean underflow;
	
	//Konstruktor

	public Stack(int size){

		merker=size;
		s=new Artikel[size];
		lenght=0;
		overflow=false;
		underflow=false;
	}
	
	public int arraySize(){
	return merker;
	}
	
	public int counter(){
	return lenght;
	}
	
	
	public void push (Artikel a){
		overflow = lenght >= s.length;
		if (!overflow){
			s[lenght]=a;
			lenght++;
		}
	}
	
	public Artikel pop(){
		underflow=lenght==0;
		if (!underflow){
			lenght--;
			return s[lenght];
			}
		else{
			return null;
		}
		
	}

}
```
--------------------------------------------------

```
package Verwaltung;
import java.util.*;

public class Artikel {
	//Datenfeld
	private String bezeichnung;
	private Date lieferzeit;
	
	//Methoden
	public String getBezeichnung()
	{
		return bezeichnung;
	}

	public Date getLieferzeit()
	{
		return lieferzeit;
	}
	
	//Konstuktor
	public Artikel(String bezeichnung)
	{
		this.bezeichnung=bezeichnung;
		lieferzeit=Calendar.getInstance().getTime();
	}
}
```
--------------------------------------------------------------------------

```
package Verwaltung;
import static Verwaltung.IOTools.*;


public class ExecuteClass {
	//Datenfeld
	int menueNumber;
	Stack stapel;
	int size;
	
	//Konstruktor
	private ExecuteClass(){
	stapel = new Stack(readInteger("Größe des Lagers: "));
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ExecuteClass exe = new ExecuteClass();
		exe.showOptions();
		exe.handleOptions();

	}

	private void handleOptions() {
		menueNumber=readInteger("=>");
		switch (menueNumber){
		case (1):
			if (stapel.counter()>=stapel.arraySize()){
				System.out.println("Lager ist voll.");
				handleOptions();}
			else{
				Artikel a;
				a=new Artikel(readString("Artikelname: "));
				stapel.push(a);
				handleOptions();}
		break;
		case (2):
			try{
			//System.out.println(""+ stapel.getBezeichnung());
			Artikel raus;
			raus = stapel.pop();
			System.out.println(raus.getBezeichnung());
			System.out.println(raus.getLieferzeit());
			handleOptions();
			}
			catch (Exception e){
			System.out.println("---");
			handleOptions();
			}
		break;
		case (3):
			System.out.println("Auf Wiedersehen");
			System.exit(0);
		break;	
		default:
			System.out.println("--");
			handleOptions();
		break;
		}
		
	}

	private void showOptions() {
		System.out.println("Menü");
		System.out.println("\t 1.) Einlagern");
		System.out.println("\t 2.) Ausgabe");
		System.out.println("\t 3.) Programm beenden");
		
	}

}
```


----------



## SlaterB (19. Mai 2011)

im ganzen Programm ist bisher nichts zu Dateien vorgesehen, was ist deine Frage?
komplett andere zusätzliche Funktionalität ergänzen? es gibt ja noch nicht mal Menü-Optionen wie 'Datei einlesen'..

wenn du bei google oder im Forum dann zu 'Datei einlesen' suchst, kannst du Grundbefehlen wie FileReader & Co. gar nicht übersehen, 
bis das in dein Programm integriert ist und Artkel in einer Textdatei ordentlich formatiert drinstehen sind es natürlich noch 42 Schritte weiter,
aber nur 'ich weiß von nix' zu schreiben bringt das Thema nicht voran..


----------



## MrSpelf (19. Mai 2011)

Ich möchte eine .txt -Datei mit i-welchen Werten einlesen, diese dann z.b. sortieren, und dann wieder als .txt-  Datei ausgeben. 
Nur hab ich keinen Plan wie ich das in das Programm reinschreiben soll.


----------



## SlaterB (19. Mai 2011)

ein großes Programm kann oft mehr eine Bürde denn eine Hilfe sein,
starte temporär ein neues nur mit main-Methode, versuche nur eine Datei einzulesen und auszugeben,
zu dieser separaten Aufgabe findest du genügend, danach kann man weitersehen


----------

