Hilfe bei Uniprojekt

LeonDerStudent

Neues Mitglied
Guten Tag,

ich hoffe, dass mir jemand weiterhelfen kann... Ich schreibe grade ein Abschlussprojekt für die Uni. Das Projekt ist in 3 verschiedene Klassen unterteilt und in der Main Klasse werden die Daten nun verarbeitet. Dies habe ich meinem Dozenten geschickt und er meinte, wenn ich es noch schaffe die Schleife anzupassen, dass diese eleganter ist, dann sieht das sehr gut aus.

[CODE lang="java" title="Dies ist der alte Code" highlight="40-86"]import java.io.*;
import java.util.*;
import org.apache.commons.csv.*;


/**
* Erstellen der ArrayList mit den Daten aus dem TicketEvent.
* Die Daten sind aus einer Zeile, einem TicketEvent zugeordnet, dass daraufhin in der ArrayList gespeichert wird.
*/

public class Main_Projekt
{
public static void main (String[] args) throws IOException
{

DataReader reader = new DataReader();
ArrayList<TicketEvent> d = reader.readTicketEvents("TICKETS.csv");

int size = d.size();

//Variablen für Änderungen
int sum1 = 0;
int dif1;
int count1 = 0;


//Variablen für Störungen
int sum2 = 0;
int dif2;
int count2 = 0;

//Variablen für Incidenten
int sum3 = 0;
int dif3;
int count3 = 0;



//Schleife um durch alle Daten zu gelangen
for (TicketEvent t : d)
{

//if-Bedingung für Änderungen

if(t.getTicketType().equals("ZMCR"))
{
int end = Integer.parseInt(t.getDateOfEnding());
int start = Integer.parseInt(t.getDateOfBeginning());

dif1 = end-start;

sum1 = sum1 + dif1;

count1++;
}

//if-Bedingung für Störungen

else if (t.getTicketType().equals("ZMIV"))
{
int end = Integer.parseInt(t.getDateOfEnding());
int start = Integer.parseInt(t.getDateOfBeginning());

dif2 = end-start;

sum2 = sum2 + dif2;

count2++;
}

//if-Bedingung für Vorfälle

else if (t.getTicketType().equals("ZMNS"))
{
int end = Integer.parseInt(t.getDateOfEnding());
int start = Integer.parseInt(t.getDateOfBeginning());

dif3 = end-start;

sum3 = sum3 + dif3;

count3++;

}

}

//Berechnung des Durschnitts

int average1 = sum1 / count1;

int average2 = sum2 / count2;

int average3 = sum3 / count3;

int fullaverage = (sum1+sum2+sum3) / size;



//Output der verschiedenen Typen und unabhängig vom Typ

System.out.println("Im Durchschnitt brauchte ein Ticket des Typs -Änderung- " + average1 + " Tage bis zur Fertigstellung");

System.out.println("Im Durchschnitt brauchte ein Ticket des Typs -Störung- " + average2 + " Tage bis zur Fertigstellung");

if(average3 < 1)
{
System.out.println("Im Durchschnitt brauchte ein Ticket des Typs -Vorfall- unter einen Tag bis zur Fertigstellung");
}
else
{
System.out.println("Im Durchschnitt brauchte ein Ticket des Typs -Vorfall- " + average3 + " Tage bis zur Fertigstellung");
}

System.out.println("Im Durchschnitt brauche ein Ticket, unabhängig vom Typ " + fullaverage + " Tage bis zur Fertigstellung");

}
}
[/CODE]

Nun habe ich eine Antwort von ihm bekommen, allerdings verstehe ich nicht wie ich dies umsetzen soll:

So geht es eleganter:

String[] types = { "ZMCR", "ZMIV", "ZMNS" };
int[] counts = new int[types.length];
int[] sums = new int[types.length];

for (TicketEvent t : d)
{
for (int i = 0; i < ...; i++)
{
if (t.getTicketType() is the same as types)
{
update counts, sums
}
}
}


Leider verstehe ich diese innere Schleife überhaupt nicht und auch nicht wie diese ablaufen soll.

Falls noch fragen offen sind um meine Frage richtig beantworten zu können, dann einfach schreiben.

Danke im Voraus!
 
Du hast in der äußeren Schleife derzeit eigentlich 3 Mal das Gleiche an Code.

Ersetze einfach einmal sum1 mit sums[0]m sum2 mit sums[1] .... und das auch mit count und counts und siehst, dass es fast etwas ähnliches ist.

Dann in der if die Konstanten mit types[0..2] ersetzen ...

Dann siehst Du die Nutzung der Schleife evtl. auch, indem Du statt if else if else if nur noch ein if hast und Code nur noch einmal da ist ...
 
Du hast in der äußeren Schleife derzeit eigentlich 3 Mal das Gleiche an Code.

Ersetze einfach einmal sum1 mit sums[0]m sum2 mit sums[1] .... und das auch mit count und counts und siehst, dass es fast etwas ähnliches ist.

Dann in der if die Konstanten mit types[0..2] ersetzen ...

Dann siehst Du die Nutzung der Schleife evtl. auch, indem Du statt if else if else if nur noch ein if hast und Code nur noch einmal da ist ...
Danke für die schnelle und präzise Antwort!

Jetzt habe ich es verstanden und umgesetzt und es funktioniert alles. 🙂
 

Neue Themen


Zurück
Oben