Was willst du wo wann zuweisen? Mir ist immer noch nicht so genau klar, was du machen willst. Zeig am besten deinen Code, dann kann man dir besser helfen.
Was willst du wo wann zuweisen? Mir ist immer noch nicht so genau klar, was du machen willst. Zeig am besten deinen Code, dann kann man dir besser helfen.
Was heißt "nach Aufruf"?
So sollte das etwa aussehen. Die main kann auch anderswo stehen.
PHP-Code:
public class MyClass{
String a, b;
public static void main(String[] args){
String[] testArray = new String[4];
testArray[0] = "a";
testArray[1] = "b";
MyClass mc = new MyClass();
}
public MyClass(String[] input){
if (input.length != 4)
System.out.println("Wrong input size");
else{
a = input[0];
b = input[1];
}
}
}
Das ist noch nicht der ganze Code, da ich mit der Aufgabe noch nicht fertig bin, aber ich soll scheinbar erreichen, dass ich eine Matrix erstellen soll und die Werte wie zb Höhe und Breite in dem Konstruktor in einem Array übergeben werden sollen.PHP-Code:
import acm.program.ConsoleProgram;
public class JacobiSimulation extends ConsoleProgram {
double [][] matrix;
int Breite, Hoehe, MaxZahl, Wartezeit;
public JacobiSimulation(String[] initialwerte) {
Breite = Integer.parseInt(initialwerte[0]);
Hoehe = Integer.parseInt(initialwerte[1]);
MaxZahl = Integer.parseInt(initialwerte[2]);
Wartezeit = Integer.parseInt(initialwerte[3]);
matrix = new double[Breite][Hoehe];
for(int i = 0; i < Breite; i++){
for(int j = 0; j < Hoehe; j++) {
matrix[i][j] = 0;
}
}
}
public static void main(String args[]) {
new JacobiSimulation(args).start();
}
}
Die Transformierung von String zu int muss ich machen, weil die Eingabe als String kommen soll. Ich verstehe wie gesagt auch noch nicht allzu viel, bzw. habe ich noch am meisten Probleme zu verstehen, wann etwas wie irgendwas übergeben bekommt, wie man das erreicht usw.
Prüf doch einfach length die Länge des Array, dann sollte es keine OutOfBounds geben. Stattdessen wird halt falls er zu klein ist, ein Fehler ausgegeben.
Elemente des Arrays sind meines Wissens nach in Java nicht null( bin eher in C++ unterwegs), sodass dann auch kein Problem geben sollte, dass das Element auf welches ich zugreife null ist.
StorysZitat von Isaac Newton; in einem Brief an Robert Hooke
Civ 4: Weg in den Olymp
Civ 4 PBEM 474 Das Steigen und Fallen der Kurse
Das sieht gut aus. Du musst nur noch im Konstruktor prüfen, ob genug Eingaben gemacht wurden. Das String[] args, das die main-Methode erwartet, kannst du beim Programmaufruf über die Konsole eingeben.
Die Konversion von String zu int ist nötig, weil es in Java halt üblich ist, die Aufrufparameter als String zu übergeben. Dadurch sind an der Stelle keine Typprüfungen nötig, sondern halt erst in deinem Code. Dann kannste mit System.out.println zurückmelden, wenn zu wenig/nicht als Zahl interpretierbare Eingaben gemacht wurden und den Benutzer evtl. einzeln dazu auffordern. Wie da die API zu ist, weiß ich aber grad net auswendig.
Die Elemente vom String[] können allerdings schon null sein iirc, da null der Standardwert für einen nicht-initialisierten String ist.
nur mal so als kleine Tipp am Rande. Schreib Variablennamen am Anfang immer klein, da Klassennamen prinzipiell groß geschrieben werden. Bei größeren Programmen kommt man sonst ziemlich schnell durcheinander.
Ansonsten brauchst du noch eine Fehlerbehandlung(catch auf NumberFormatException) bei parseInt(String ...) da kann ja alles mögliche reinkommen und dein Programm raucht bei Fehleingabe unkontrolliert ab.
Kommt da noch was oder warum weißt du deiner double Matrix überall den Wert 0 über zwei Schleifen zu? kleine double sind doch alle von Haus aus 0.
Wer Rechtschreibfehler findet darf diese behalten :)
Original geschrieben von robertinho:
"Asterix und Flati stehen für solide Kompetenz und Verlässlichkeit."
...also, nee, die Nullen reinschreiben sollte drinbleiben. Man kann sich nicht früh genug angewöhnen, grundsätzlich IMMER zu initialisieren.
Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch
Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.
Wer Rechtschreibfehler findet darf diese behalten :)
Original geschrieben von robertinho:
"Asterix und Flati stehen für solide Kompetenz und Verlässlichkeit."
...also, never sacrifice safety to performance
Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch
Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.
Mich stört ja eher dass er die Parameter als ein String Array übergibt. Das müsste eher das double Array sein. Dann muss er in der Funktion auch nicht parsen und überprüfen. Die Klasse ist damit unabhängig von der String Repräsentation und kann besser wiederverwendet werden.
Außerdem sind 2D-Arrays meh.
double get(int x, int y, int arraywidth){
return array[y*arraywidth+x]
}
Ist imo einfacher zu handhaben und dürfte auch caching besser ausnutzen.
|學而不思則罔,思而不學則殆。 ~ 孔子|
| Lernen ohne zu denken ist sinnlos, denken ohne zu lernen gefährlich. ~ Kong Zi |
| During times of universal deceit, telling the truth becomes a revolutionary act ~ George Orwell |
SdM Dez16 - XCOM2 Make Humanity Great again
...also, die Strings sind glaub eine Java-Krankheit. Lasst euch nur nicht erzählen, dass man das in der Sprache halt so macht - es ist einfach eine schlechte Idee, was Sicherheit angeht. Allein wie viele Checks in den Codebeispielen der letzten paar Posts fehlen. Und falls die durch parseInt erledigt werden, ist das Performance-Argument beim Nullen auch tot
Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch
Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.