Rešitev: program Simulator prebivalstva (računski del)

Iz MaFiRaWiki

Naloga: simulator prebivalstva

Sledeča koda sama po sebi ne deluje, saj je odvisna od komponent, ki tu niso vidne.

  1.  
  2. // Dogodek, ki se izvrši ob pritisku na gumb v Swing oknu - izračun novih vrednosti
  3.  
  4. private void jButton1_actionPerformed(ActionEvent e)
  5. {
  6.  
  7. izvedba = Integer.parseInt((String)jComboBox5.getSelectedItem());
  8. //export = izvedbe;
  9. for (int i = 0; i < izvedba; i++){
  10. System.out.println("\njButton1_actionPerformed(ActionEvent e) called.");
  11. // Izvedba ob pritisku
  12. prebivalstvo = (int)Double.parseDouble(jTextField1.getText());
  13.  
  14. String crime = (String)jComboBox1.getSelectedItem();
  15. String tech = (String)jComboBox2.getSelectedItem();
  16. String okolje = (String)jComboBox3.getSelectedItem();
  17. String katastrofe = (String)jComboBox4.getSelectedItem();
  18. int gostota = jSlider1.getValue();
  19. double tech2;
  20. double crime2;
  21. double okolje2;
  22. double katastrofe2;
  23. //S pomočjo if zank ugotavljanje vsebine posameznih vrednosti - ne najbolj elegantna rešitev.
  24. if (stikalo == 0){
  25. prebivalstvoStat = prebivalstvo;
  26. }
  27. if (katastrofe.equalsIgnoreCase( "pogosto" )) katastrofe2 = 1;
  28. else if (katastrofe.equalsIgnoreCase( "obicajno" )) katastrofe2 = 0;
  29. else katastrofe2 = -1;
  30.  
  31. if (okolje.equalsIgnoreCase( "ugodno" )) okolje2 = 1;
  32. else if (katastrofe.equalsIgnoreCase( "nevtralno" )) okolje2 = 0;
  33. else okolje2 = -1;
  34.  
  35. if (crime.equalsIgnoreCase( "visoka" )) crime2 = 1;
  36. else if (crime.equalsIgnoreCase( "srednjao" )) crime2 = 0;
  37. else crime2 = -1;
  38.  
  39. if (tech.equalsIgnoreCase( "visoka" )) tech2 = 1;
  40. else if (tech.equalsIgnoreCase( "srednja" )) tech2 = 0;
  41. else tech2 = -1;
  42.  
  43. //Vsi potrebni izračuni
  44. double rodnost = 5.00/1000 * (100.00 + okolje2)/100.00 * (100 + tech2)/100.00 + 5.00/1000.00 * (50 - gostota);
  45. double smrtnost = 5.00/1000 * (100.00 + katastrofe2)/100.00 * (100.00 + crime2)/100.00 + 3.00/1000.00 * (-50 + gostota);
  46.  
  47. prebivalstvo = (int)(prebivalstvo * (100 + rodnost - smrtnost)/100.00);
  48. jLabel8.setText("Prebivalstvo: " + prebivalstvo);
  49. gostota = (int)(gostota * prebivalstvo/prebivalstvoStat);
  50. jSlider1.setValue(gostota);
  51. jLabel9.setText("Naravni prirastek je: ");
  52. jLabel10.setText(String.format("%.2f", ((rodnost - smrtnost)*1000)) + " promila");
  53. jTextField1.setText(String.valueOf(prebivalstvo));
  54.  
  55. //jLabel9.setText(String.valueOf(stikalo) +" "+ String.valueOf(x)+" "+String.valueOf(y)+" "+ String.valueOf(x2)+" "+String.valueOf(y2));
  56. //skala = (int)(prebivalstvoStat/175.00);
  57.  
  58. tabela[stikalo] = (int)(prebivalstvo);
  59. stikalo ++;
  60.  
  61. }
  62. // ta koda je tu zaradi izrisa grafa.
  63. drawFrame.nastavi(tabela, izvedba);
  64. drawFrame.validate();
  65. drawFrame.removeAll();
  66. drawFrame.repaint();
  67. stikalo = 0;
  68.  
  69.  
  70.  
  71. }
  72.  
  73. // File manager (branje iz datoteke)
  74.  
  75. private void jButton2_actionPerformed(ActionEvent e)
  76. {
  77.  
  78. int returnVal = fc.showOpenDialog(Simulacija5.this);
  79.  
  80. if (returnVal == JFileChooser.APPROVE_OPTION) {
  81. try {
  82. file = fc.getSelectedFile();
  83. BufferedReader inputStream = null;
  84. inputStream = new BufferedReader(new FileReader(file));
  85. String l;
  86. String zapis = "";
  87. while ((l = inputStream.readLine()) != null) {
  88. zapis = zapis + l;
  89. zapis = zapis + "break";
  90. }
  91. String [] temp = null;
  92. temp = zapis.split("break");
  93.  
  94. int gostota = Integer.parseInt(temp[4]);
  95. double tech2 = Double.parseDouble(temp[1]);
  96. double crime2 = Double.parseDouble(temp[0]);
  97. double okolje2 = Double.parseDouble(temp[2]);
  98. double katastrofe2 = Double.parseDouble(temp[3]);
  99. int prebivalstvo = Integer.parseInt(temp[5]);
  100.  
  101.  
  102. double rodnost = 5.00/1000 * (100 + okolje2)/100 * (100 + tech2)/100 + 5.00/1000 * (50 - gostota);
  103. double smrtnost = 5.00/1000 * (100 + katastrofe2)/100 * (100 + crime2)/100 + 3.00/1000 * (-50 + gostota);
  104.  
  105. prebivalstvo = (int)(prebivalstvo * (100 + rodnost - smrtnost)/100);
  106. jLabel8.setText("Prebivalstvo: " + prebivalstvo);
  107. gostota = (int)(gostota * prebivalstvo/prebivalstvoStat);
  108. jSlider1.setValue(gostota);
  109. jLabel9.setText("Naravni prirastek je:");
  110. jLabel10.setText(String.format("%.2f", ((rodnost - smrtnost)*1000)) + " promila");
  111. //String str = Double.toString(tech2); za testiranje
  112. //jLabel9.setText(str); za testiranje
  113. jTextField1.setText(String.valueOf(prebivalstvo));
  114.  
  115. } catch (IOException f) {
  116. f.printStackTrace();
  117. }
  118. }
  119. }

Glej tudi

Osebna orodja