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!
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!