Beiträge von 0326640

    Hey Leute,

    ich möchte einen Array definieren, der aber mehr Elemente als im int-Zahlenbereich erlaubt erfordert. Gibt es eine Möglichekit, die Größe eines Arrays über eine long-Variable (oder igendeinen anderen Datentyp größer gleich 999999999) festzulegen?

    Danke für eure Inputs,
    cheers,
    alex

    Hey Leute,

    bräuchte euren professionellen Rat bei folgendem Problem:

    Ich habe Array-Lists erzeugt, um beim Initialisieren von Objekten Objekte gleicher Art zusammenzufassen, wobei die Zuordnung zu einer bestimmten Array-List abhängig von einer objektspezifischen ID ist. Der Quellcode schaut folgendermaßen aus:

    ArrayList <Inventories> hardware=new ArrayList<Inventories>(100);
    ArrayList <Inventories> software=new ArrayList<Inventories>(100);

    // Constructor for item
    public Inventories (int ID, String description) {
    this.ID=ID;
    this.description=description;


    //add item to Inventory Group
    if (this.ID>=1&this.ID<=10) {
    //ensure capacity for ArrayList
    for (int i = 0; i <= 100; i++)
    hardware.add(null);
    hardware.add(this.ID,this);
    }

    else if (this.ID>=11&this.ID<=20) {
    //ensure capacity for ArrayList
    for (int i = 0; i <= 100; i++)
    software.add(null);
    software.add(this.ID,this);

    Mit einer weiteren Methode definiere ich eine Schnittstelle, um produktspezifische Informationen aus der ArrayList abzurufen:

    public void getProductInformation(int ID){
    if (ID>=1&ID<=10) {
    String productinfo1= hardware.get(ID).description.toString();
    System.out.println("The procuct wearing ID number " + ID + " is a " + productinfo1);

    }

    else if (ID>=11&ID<=20) {
    String productinfo1= hardware.get(ID).description.toString();
    System.out.println("The procuct wearing ID number " + ID + " is a " + productinfo1);
    }

    }

    In der main-Klasse lassen sich Informationen aus der ArrayList "Hardware" problemlos abrufen, erzeuge ich allerdings ein Objekt mit einer ID größer 10 und will ich die produktspezifischen Informationen aus der Array-List "Software" abfragen, so wird folgende Exception getriggered:

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 00

    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at Warehouse.Inventories.getProductInformation(Inventories.java:61)

    Kann mir jemand von euch vielleicht erklären, weshalb sich das Programm hier unterschiedlich verhält, obwohl beide ArrayLists und auch die Schnittstellen zu den abgespeicherten Informationen ident definiert wurden?

    Vielen Dank für euer Hilfe und beste Grüße,

    Alex

    Hallo,

    bin leider noch ziemlicher Newbie im Umgang mit Junit und Jumble und wäre sehr froh und dankbar, wenn mir jemand von Euch beim folgenden Beispiel vielleicht auf die Sprünge helfen kann. Beim Versuch die Test-Class mit diesem Unit-Test zu jumblen, erhalte ich immer die Fehlermeldung "Test Class is broken" (lösche ich den Test raus, kompiliert er fehlerfrei), ich gehe also davon aus dass die Test-Methode eine fehlerhafte Passage in sich trägt, bin nach unzähligen Umformulierungsversuchen aber am Ende meines Lateins angelant. Bin für jeden Input dankbar.

    Hier liegt der Hund irgendwo begraben:

    public void testkillmutant2(){
    try {
    one=new Stack(2);
    int two=2;
    one.push(two);
    one.push(two);
    failNotEquals("Messages do not correspond", "String is full", one.isFull());}

    catch (FullStackException fse) {

    }
    }

    Danke für eure Mithilfe,
    cheers
    alex

    Hey Leute,

    habe leider noch kaum Erfahrung mit dem JUnit-Testprogramm und bräuchte dringend eine Hilfestellung (der Abgabetermin rückt immer näher). Beim Versuch, den unten angehängten Source-Code im Netbeans zu testen, triggered er mir immer folgende Exception:

    Exception in thread "main" java.lang.NoSuchMethodError: junit.swingui.TestRunner.inVAJava()Zat junit.swingui.TestRunner.createUseLoaderCheckBox(TestRunner.java:310)
    at junit.swingui.TestRunner.createUI(TestRunner.java:432)
    at junit.swingui.TestRunner.start(TestRunner.java:777)
    at junit.swingui.TestRunner.main(TestRunner.java:104)
    at junit.swingui.TestRunner.run(TestRunner.java:109)
    at stack_introductory.StackTest.main(StackTest.java:31)


    Source Code:

    package stack_introductory;

    import org.junit.After;
    import org.junit.AfterClass;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.junit.Assert.*;
    import junit.framework.TestCase;
    import junit.swingui.TestRunner;
    /**
    *
    * @author bechter
    */
    public class StackTest extends TestCase{
    int two=2;
    private Stack one;


    public void testpush(){
    one=new Stack();
    one.push(two);
    assertTrue("Die Zahlen stimmen nicht überein", 2==one.pop());}

    public static void main (String [] args) {
    junit.swingui.TestRunner.run(StackTest.class);
    }

    }

    Wär wirklich super wenn mir hier vielleicht jemand auf die Sprünge helfen könnte!!!!! Bin für jeden Lösungsvorschlag/Denkanstoß dankbar...

    Danke schon mal im Voraus,
    cheers
    alex

    Naja, das ist grundsätzlich so kein Long, sondern eine Zahl in Exponentialschreibweise. Wenn das ein UNIX-Timestamp mit Millisekunden ist (wäre 2.12.2009, 12:18:32 MEZ), dann hau den Punkt und das "E12" raus. Mit dem, was du dann bekommst, fütterst du Long.parseLong().

    Wenn das was anderes ist, dann musst du die Eingabe entsprechend umformen, sodass Long.parseLong oder Float.parseFloat (wenn du eine Gleitkommazahl brauchst) damit zurechtkommen.


    cool, danke für die rasche auskunft!!! hast du vielleicht auch noch einen tip, mit welchem befehl ich den Punkt und "E12" dynamisch am besten raushau? Ist die replaceAll()-Methode dafür geeignet oder eher weniger?

    Hallo,

    habe ein problem mit einem Java Programmierbeispiel. Es geht prinzipiell darum, aus einem File abgespeicherte Daten (Start- und Stopzeiten) auszulesen und daraus Rundenzeiten zu berechnen. Nun bekomme ich beim Versuch des Kompilierens meines Quellcodes immer diese Fehlermeldung:

    "Exception in thread "main" java.lang.NumberFormatException: For input string: "1.259752712926E12" - (dieser String ist der Wert der ersten Zeile meines eingelesenen Files).

    Der Source Code lautet folgendermaßen:

    import java.util.ArrayList;
    import java.util.StringTokenizer;
    import java.util.*;
    import java.io.*;
    /**
    *
    * @author Sicknick
    */
    public class timeStop {
    long laptime;
    int lap;
    String filepath="lapsRecord.txt";

    timeStop (int lap) throws IOException{
    this.lap=lap;
    this.laptime=rundenzeit();
    }

    public long rundenzeit() throws IOException{

    FileReader fr = new FileReader(filepath);

    BufferedReader br= new BufferedReader(fr);

    Scanner sc = new Scanner(br);

    String daten=sc.nextLine();

    String [] datensplit=daten.split("[|\n]");

    long startzeit=Long.parseLong(datensplit [(lap-1)*2]);
    long stopzeit=Long.parseLong(datensplit [lap+lap]);

    laptime=stopzeit-startzeit;

    fr.close();

    br.close();

    return laptime;


    }
    }


    In der main Methode lässt sich dann problemlos eine Instanz der Klasse timeStop bilden, beim Versuch die Methode mit der erzeugten Instanz zu starten stellt sich dann aber ein Laufzeitfehler ein. Kann mir vielleicht wer sagen, ob dieser Code syntaktisch komplett falsch ist oder ob der Hund irgendwo im Detail begraben liegt? Bin leider noch absoluter Java-Laie und kenn mich insbesondere mit Exceptions noch nicht wirklich gut aus, wäre also für jedes Feedback sehr dankbar!!!

    cheers,
    alex

    na das ging ja flott, vielen Dank für die auskünfte, funktioniert tadellos...

    wär wohl gut beraten meine google-skills mal auf vordermann zu bringen, konnte wirklich nichts dergleichen finden!! anyway, danke nochmal...

    Hey leute,

    nachdem ich nun vergeblich stundenlang über Google versucht habe, eine Problemlösung für meine Fragestellung ausfindig zu machen, wende ich mich nun an die Experten unter Euch!

    Das Problem ist an sich ganz simpel, keine Ahnung weshalb ich im Google keine Hints zu dieser Problematik finden konnte:

    Und zwar erzeuge ich durch einen Scanner einen String, bspw. String a. Diesen String a möchte ich nun bei jedem Leerzeichen und nach jedem "x" splitten, um nachher einen Array erzeugen zu können. Meine Frage wäre nun also, wie ich zwei Split-Argumente miteinander verknüpfen. Um es an einem Bsp. zu verdeutlichen -

    String a = m 50x60;
    String[] ab= a.split (" " ???? "x");

    Danke für eure Hilfe,
    cheers
    alex

    Hallo,

    bräuchte eure Hilfe bei einer Programmieraufgabe. Es geht darum Rechenoperationen(+,-,*,x) mit zwei- bzw. dreidimensionalen Vektoren durchzuführen - je nach Wahl des Users.

    ich habe das wie folgt gecoded:

    public static void main(String[] args) {
    Scanner sc = new Scanner (System.in);


    System.out.println("Bitte geben sie einen zwei- oder dreidimensionalen Vektor ein: ");
    String eingabe1 = sc.nextLine();
    eingabe1 = eingabe1.trim();
    String vektor1 [] = eingabe1.split (" ");

    int zahl1 = Integer.parseInt(vektor1[0]);
    int zahl2 = Integer.parseInt(vektor1[1]);
    if (vektor1.length==3) {int zahl5 = Integer.parseInt(vektor1[2]);}

    /* falls Vektor 3 Dimensionen besitzt, soll die z-Koordinate ebenfalls
    geparsed werden*/

    System.out.println("Bitte geben sie einen zweiten zwei- oder dreidimensionalen Vektor ein: ");
    String eingabe2 = sc.nextLine();
    eingabe2 = eingabe2.trim();
    String vektor2 [] = eingabe2.split (" ");


    int zahl3 = Integer.parseInt(vektor2[0]);
    int zahl4 = Integer.parseInt(vektor2[1]);
    if (vektor2.length==3) {int zahl6 = Integer.parseInt(vektor2[2]);}

    /* falls Vektor 3 Dimensionen besitzt,soll die z-Koordinate ebenfalls
    geparsed werden*/

    System.out.println("Bitte wählen sie eine Rechenart aus: " +
    " (1)Addition" +
    " (2)Subtraktion" +
    " (3)Skalarprodukt" +
    " (4)Kreuzprdoukt;" );

    int eingabe5 = sc.nextInt();

    switch (eingabe5) {
    case 1: if (vektor1.length ==3 && vektor2.length == vektor1.length) System.out.println("Das Ergebnis ist " + (zahl1+zahl3) + " " + (zahl2 + zahl4) + " " + (zahl5+zahl6) + ".");

    else System.out.println("Das Ergebnis ist " + (zahl1+zahl3) + " " + (zahl2 + zahl4) + ".");break;

    case 2: if (vektor1.length ==3 && vektor2.length == vektor1.length) System.out.println("Das Ergebnis ist " + (zahl1-zahl3) + " " + (zahl2 - zahl4) + " " + (zahl5-zahl6) + ".");

    else
    System.out.println("Das Ergebnis ist " + (zahl1-zahl3) + " " + (zahl2 - zahl4) + ".");break;

    case 3: if (vektor1.length ==3 && vektor2.length == vektor1.length) System.out.println("Das Ergebnis ist " + (zahl1*zahl3+zahl2*zahl4+zahl5*zahl6) + ".");

    else System.out.println("Das Ergebnis ist " + (zahl1*zahl3+zahl2*zahl4) + ".");break;

    case 4: if (vektor1.length ==3 && vektor2.length == vektor1.length) System.out.println("Das Ergebnis ist " + (zahl2*zahl6-zahl5*zahl4) + " " + (zahl5*zahl3-zahl1*zahl6) + " " + (zahl1*zahl4-zahl2*zahl3) + ".");

    else System.out.println("Das Kreuzprodukt ist nur im dreidimensionalen Raum generierbar.");
    }


    }
    }

    Beim Ausführen des Programms erzeugt der Compiler im dreidimensionalen Fall einen Laufzeitfehler, weil er die Zahl 5 bzw. Zahl 6 nicht erkennt. Kann mir vielleicht wer auf die Sprünge helfen, wo da der Hund begraben liegt und wie ich dieses Problem lösen kann??

    Vielen Dank schon mal im Voraus,
    cheers
    alex