2016-05-31 69 views
0

在我的大學裏,我必須做一個項目,其中包括一個必須使用Java對其自己的座標系進行調整的部分,它必須是動態的,並且是一個小程序。如何在Java中將外部數據放入數組中

它大部分已經完成,但我不知道如何將外部數據放入我的數組。我不知道有多少個參數(它可能是10,但也可能是10000)。

那麼如何告訴數組需要多少空間以及如何將參數放入數組?

它將總是x和y座標,所以我有2個數組。

這是我已經試過的代碼。我爲數組硬編碼參數只是爲了查看它是否工作。

下面的java代碼我發佈html代碼。在那是我想添加到我的數組參數。

import java.awt.*; 
import java.applet.Applet; 
import java.lang.Math; 

public class graph extends java.applet.Applet { 
    //Array x-Werte 
    private double[] WerteX= {0.0, 5.5, 6.5, 7.0, 16.6, 50.6}; 

    //Array y-Werte 
    private double[] WerteY= {0.0 , 100.0, 320.0, 550.0, 700.0, 0.3}; 

    public void init() { 
     // Hintergrundfarbe schwarz 
     setBackground (Color.black); 
    } 

    public void paint (Graphics g) { 
     float x, y; 
     int xnorm, ynorm, i; 

     // initialisierung der min und max X/Y werte damit sich das System anpasst 
     double minX= WerteX [0]; 
     double maxX= WerteX [0]; 
     double minY= WerteY [0]; 
     double maxY= WerteY [0]; 

     // zum Kleinsten bzw. größten Wert im Array raussuchen (Prinzip Bubbelsotrt (ungefähr)) 
     for (i=1; i<WerteX.length; i++) { 

      if (WerteX[i]<minX){ 
       minX=WerteX[i]; 
      } 
      if (WerteX[i]>maxX){ 
       maxX=WerteX[i]; 
      } 
      if (WerteY[i]<minY){ 
       minY=WerteY[i]; 
      } 
      if (WerteY[i]>maxY){ 
       maxY=WerteY[i]; 
      } 
     } 

     // Vordergrundfarbe Rot fuer die Achsen 
     g.setColor (Color.red); 

     // X-Achse zeichnen (schon skaliert auf 500%) 
     g.drawLine (0, 650, 650, 650); 

     // Y-Achse zeichnen (schon skaliert auf 500%) 
     g.drawLine (100, 0, 100, 650); 

     // Skaleneinteilung fuer die X-Achse zeichnen 
     for (i = 100; i <= 750; i += 150){ 
      g.drawLine (i, 0, i, 650); 
     } 

     // Skaleneinteilung fuer die Y-Achse zeichnen 
     for (i = 0; i <= 650; i += 50){ 
      g.drawLine (100, i, 750, i); 
     } 

     double Irgendwasdx=maxX-minX;    // achsen bezeichnung 
     double Irgendwasdy=maxY-minY; 

     maxX+=Irgendwasdx/12; 

     maxY+=Irgendwasdy/12; 

     g.setColor(Color.red);    // farbe des Systems und schrift 
     g.setFont(new Font("Arial", Font.BOLD, 20)); 

     // Koordinatenbezeichnung x-Achse  

     i=0; 

     for (double plotty= minX; plotty<=maxX; plotty+=(maxX-minX)/(13.0/3.0)){ 

      g.drawString(String.valueOf(Math.round(plotty)), 100+i*150, 670);  //runden 
      i++; 
     } 

     //Koordinatenbezeichnung y-Achse 
     i=0; 

     for (double plotty= minY; plotty<=maxY; plotty+=(maxY-minY)/13){ 

      g.drawString(String.valueOf(Math.round(plotty)), 80 ,650-50*i); //runden 
      i++; 
     } 

     int size = WerteX.length; 

     g.setColor (Color.white); 

     for (i=0; i<size; i++) {    //Punkte 
      g.fillOval ((int)(WerteX[i]*650/(maxX-minX)-650*minX/(maxX-minX))+100-3, 650-(int)(WerteY[i]*650/(maxY-minY)-650*minY/(maxX-minY))-3, 6, 6); 
     }      
     //Punkte verbinden 
     for (i=0; i<size-1; i++) { 
      g.drawLine ((int)(WerteX[i]*650/(maxX-minX)-650*minX/(maxX-minX))+100, 650-(int)(WerteY[i]*650/(maxY-minY)-650*minY/(maxX-minY)),(int)(WerteX[i+1]*650/(maxX-minX)-650*minX/(maxX-minX))+100, 650-(int)(WerteY[i+1]*650/(maxY-minY)-650*minY/(maxX-minY))); 
     } 

    } 

} 

<html> 
<head> 
</head> 
<body> 

<Applet code="graph.class" width="700" height="700"> 

<param name= "P" value=5> 

<param name="x0" value="0.60"> 
<param name="x1" value="1.20"> 
<param name="x2" value="2.50"> 
<param name="x3" value="3.40"> 
<param name="x4" value="3.80"> 

<param name = "N" value =5> 

<param name="y0" value="0.00"> 
<param name="y1" value="0.12"> 
<param name="y2" value="0.25"> 
<param name="y3" value="0.37"> 
<param name="y4" value="0.50"> 


</Applet> 

</body> 
</html> 
+0

例如,構造一個新的數組,可以包含七個雙打==>'double [] = new double [7]'。如果你希望它具有'無限'空間,請嘗試使用ArrayList。此外,由於您使用的是面向對象編程語言,因此您可以創建自己的座標類,它可以產生許多座標對。 – MrKickkiller

+0

對不起,我忘記了我是一個absulut初學者,所以請稍微詳細一點.... :) – JustMe

+0

1)爲什麼要編寫一個小程序?如果是由於老師指定它,請將它們轉介給[爲什麼CS教師應該**停止**教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop教學-java的小應用程序/)。 2)請參閱[不支持Java插件的支持](http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/)和[轉移到無插件Web]( https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free)。 .. –

回答

2

構建的陣列爲大小X

double[] NameOfYourArray = new double[x];

的雙打構建的陣列/列表 - 型,可以採取無限對象/雙打(在這種情況下)

ArrayList<Double> nameOfYourArray = new ArrayList<Double>(); 
nameOfYourArray.add(NEW_ELEMENT); // to add an element of type Double. 
nameOfYourArray.get(INDEX); // to get the element at position INDEX 

座標

Java是面向對象的語言e,這意味着你可以用一個對象來表示任何東西。對象是通過定義類來創建的。就像Double,ArrayList,String,Integer等都是類。我們可以使我們自己的類座標具有x和y。

public class Coordinate { 
    private double x; private double y; 

    public Coordinate(double x, double y){ 
     this.x = x; this.y = y; 
    } 

    public double getX(){ return x; } 
    public double getY(){ return y; } 
} 

要使座標系工作,您需要將ArrayList的類型更改爲座標,而不是Double。

另外,在名爲Coordinate.java的新文件中定義座標。它應該與當前文件位於同一個目錄中。

相關問題