Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Aufgabe 2) Eindimensionale Arrays und File I/O
- */
- import java.awt.*;
- import java.util.Arrays;
- public class Aufgabe2 {
- private static String[] readFileData(String fileName, int lineStart, int lineEnd) {
- In fileReader = new In(fileName);
- String[] chosenlines = new String[lineEnd-lineStart];
- if (fileReader.exists()){
- String zeile;
- int counter = 0;
- while(fileReader.hasNextLine()){
- counter++;
- zeile = fileReader.readLine();
- if(counter >= lineStart && counter < lineEnd){
- chosenlines[counter-lineStart] = zeile;
- }
- }
- }
- return chosenlines;
- }
- private static void extractData(String[] dataArray, int[] resultArray, int numColumn, int entriesPerYear) {
- int peryear = 0;
- for (int i = 0; i < dataArray.length; i++) {
- peryear += Integer.parseInt(dataArray[i].split(";")[numColumn]);
- if ((i + 1) % entriesPerYear == 0) {
- resultArray[i/12] = peryear ;
- peryear = 0;
- }
- }
- }
- private static void drawChart(int[] frostDays, int[] iceDays, int[] summerDays, int[] heatDays) {
- int width = 1230;
- int height = 500;
- StdDraw.setCanvasSize(width, height);
- StdDraw.setXscale(0, width);
- StdDraw.setYscale(-height / 2, height / 2);
- StdDraw.setPenRadius(0.0055);
- Font font1 = new Font("Times", Font.PLAIN, 10);
- StdDraw.setFont(font1);
- int count = 0;
- for (int i = 79; i < 100 ; i++, count++) {
- StdDraw.text(30 + count*30,-230, Integer.toString(i));
- }
- for (int i = 0; i < 19 ; i++, count++) {
- if (i < 10) {
- StdDraw.text((30 + count*30),-230, "0" + Integer.toString(i));
- } else {
- StdDraw.text(30 + count * 30, -230, Integer.toString(i));
- }
- }
- for (int i = 1; i <= 4; i++) {
- StdDraw.text(8, 50*i, Integer.toString(25*i));
- }
- for (int i = 1; i <= 4; i++) {
- StdDraw.text(1222, 50*i, Integer.toString(25*i));
- }
- for (int i = 1; i <= 4; i++) {
- StdDraw.text(1222, 50*i, Integer.toString(25*i));
- }
- for (int i = 1; i <= 4; i++) {
- StdDraw.text(1222, 50*i, Integer.toString(25*i));
- }
- for (int i = 0; i < frostDays.length ; i++) {
- StdDraw.setPenColor(Color.RED);
- StdDraw.rectangle(30 + i*30, summerDays[i],10,summerDays[i]);
- StdDraw.filledRectangle(30 + i*30,heatDays[i],5,heatDays[i]);
- StdDraw.setPenColor(Color.BLUE);
- StdDraw.rectangle(30 + 30*i,-(frostDays[i]),10,frostDays[i]);
- StdDraw.filledRectangle(30 + i*30,-(iceDays[i]),5,iceDays[i]);
- }
- StdDraw.setPenColor(Color.GREEN);
- StdDraw.setPenRadius(0.005);
- StdDraw.line(5,0, 1225, 0);
- }
- public static void main(String[] args) {
- String[] data = readFileData("weather_data.csv",290,770);
- int[] frostDays = new int[40];
- int[] iceDays= new int[40];
- int[] summerDays = new int [40];
- int [] heatDays = new int[40];
- extractData(data,frostDays,9,12);
- extractData(data,iceDays,10,12);
- extractData(data,summerDays,11,12);
- extractData(data,heatDays,12,12);
- drawChart(frostDays,iceDays,summerDays,heatDays);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement