在我的大学里,我必须做一个项目,其中包括一个必须使用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>
例如,构造一个新的数组,可以包含七个双打==>'double [] = new double [7]'。如果你希望它具有'无限'空间,请尝试使用ArrayList。此外,由于您使用的是面向对象编程语言,因此您可以创建自己的坐标类,它可以产生许多坐标对。 –
MrKickkiller
对不起,我忘记了我是一个absulut初学者,所以请稍微详细一点.... :) – JustMe
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)。 .. –