2016-05-31 118 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的新文件中定义坐标。它应该与当前文件位于同一个目录中。

相关问题