Advertisement
Guest User

aufgabe2.java

a guest
Dec 5th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.55 KB | None | 0 0
  1. /*
  2.     Aufgabe 2) Eindimensionale Arrays und File I/O
  3. */
  4.  
  5. import java.awt.*;
  6. import java.util.Arrays;
  7.  
  8. public class Aufgabe2 {
  9.  
  10.     private static String[] readFileData(String fileName, int lineStart, int lineEnd) {
  11.         In fileReader = new In(fileName);
  12.         String[] chosenlines = new String[lineEnd-lineStart];
  13.         if (fileReader.exists()){
  14.             String zeile;
  15.             int counter = 0;
  16.             while(fileReader.hasNextLine()){
  17.                 counter++;
  18.                 zeile = fileReader.readLine();
  19.                 if(counter >= lineStart && counter < lineEnd){
  20.                     chosenlines[counter-lineStart] = zeile;
  21.                 }
  22.  
  23.             }
  24.         }
  25.         return chosenlines;
  26.     }
  27.  
  28.     private static void extractData(String[] dataArray, int[] resultArray, int numColumn, int entriesPerYear) {
  29.         int peryear = 0;
  30.         for (int i = 0; i < dataArray.length; i++) {
  31.             peryear  += Integer.parseInt(dataArray[i].split(";")[numColumn]);
  32.             if ((i + 1) % entriesPerYear == 0) {
  33.                 resultArray[i/12] = peryear ;
  34.                 peryear = 0;
  35.             }
  36.  
  37.         }
  38.     }
  39.  
  40.  
  41.     private static void drawChart(int[] frostDays, int[] iceDays, int[] summerDays, int[] heatDays) {
  42.         int width = 1230;
  43.         int height = 500;
  44.         StdDraw.setCanvasSize(width, height);
  45.         StdDraw.setXscale(0, width);
  46.         StdDraw.setYscale(-height / 2, height / 2);
  47.         StdDraw.setPenRadius(0.0055);
  48.         Font font1 = new Font("Times", Font.PLAIN, 10);
  49.         StdDraw.setFont(font1);
  50.  
  51.         int count = 0;
  52.         for (int i = 79; i < 100 ; i++, count++) {
  53.  
  54.             StdDraw.text(30 + count*30,-230, Integer.toString(i));
  55.         }
  56.         for (int i = 0; i < 19 ; i++, count++) {
  57.  
  58.             if (i < 10) {
  59.                 StdDraw.text((30 + count*30),-230, "0" +  Integer.toString(i));
  60.             } else {
  61.                 StdDraw.text(30 + count * 30, -230, Integer.toString(i));
  62.             }
  63.         }
  64.         for (int i = 1; i <= 4; i++) {
  65.  
  66.             StdDraw.text(8, 50*i, Integer.toString(25*i));
  67.         }
  68.         for (int i = 1; i <= 4; i++) {
  69.  
  70.             StdDraw.text(1222, 50*i, Integer.toString(25*i));
  71.         }
  72.         for (int i = 1; i <= 4; i++) {
  73.  
  74.             StdDraw.text(1222, 50*i, Integer.toString(25*i));
  75.         }
  76.         for (int i = 1; i <= 4; i++) {
  77.  
  78.             StdDraw.text(1222, 50*i, Integer.toString(25*i));
  79.         }
  80.  
  81.  
  82.         for (int i = 0; i < frostDays.length ; i++) {
  83.             StdDraw.setPenColor(Color.RED);
  84.             StdDraw.rectangle(30 + i*30, summerDays[i],10,summerDays[i]);
  85.             StdDraw.filledRectangle(30 + i*30,heatDays[i],5,heatDays[i]);
  86.             StdDraw.setPenColor(Color.BLUE);
  87.             StdDraw.rectangle(30 + 30*i,-(frostDays[i]),10,frostDays[i]);
  88.             StdDraw.filledRectangle(30 + i*30,-(iceDays[i]),5,iceDays[i]);
  89.         }
  90.  
  91.         StdDraw.setPenColor(Color.GREEN);
  92.         StdDraw.setPenRadius(0.005);
  93.         StdDraw.line(5,0, 1225, 0);
  94.  
  95.     }
  96.  
  97.     public static void main(String[] args) {
  98.         String[] data = readFileData("weather_data.csv",290,770);
  99.         int[] frostDays = new int[40];
  100.         int[] iceDays= new int[40];
  101.         int[] summerDays = new int [40];
  102.         int [] heatDays = new int[40];
  103.         extractData(data,frostDays,9,12);
  104.         extractData(data,iceDays,10,12);
  105.         extractData(data,summerDays,11,12);
  106.         extractData(data,heatDays,12,12);
  107.         drawChart(frostDays,iceDays,summerDays,heatDays);
  108.  
  109.  
  110.  
  111.  
  112.     }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement