1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Ich finde meinen Fehler nicht :(

  • Grammostola
  • 27. November 2007 um 14:15
  • Unerledigt
  • Grammostola
    2
    Grammostola
    Mitglied
    Punkte
    30
    Beiträge
    5
    • 27. November 2007 um 14:15
    • #1

    Servus allerseits, ich hock da jetzt schon ein Weilchen dran und irgendwie erschließt sich mir nicht wo mein Fehler liegt.
    Wir sollten ein Programm schreiben, daß die Abkühlung eines 100x100 großen Metallblocks, bestehend aus einzelnen Klötzchen, simuliert und dabei mit 2dim Arrays, if-else und for-schleifen arbeiten.

    Nun ist mir aber anscheinend irgendwo ein Logik, oder Formfehler unterlaufen den ich ums Verrecken (entschuldigt meine Ausdrucksweise) nicht finde.

    Ich bekomme einen Unreachable Statementerror direkt nach der großen For Schleife (var i), sprich über die kommt er nicht hinaus....

    Aber wieso? Hilfe :frowning_face:

    Mein Code:

    Java
    import java.util.*;
    
    
    public class Waermeleitung
    {
        public static void main (String args [])
        {
            Locale.setDefault(Locale.US);
            Scanner sc = new Scanner(System.in);
    
            double[][] aktuelleTemperatur = new double[100][100];
            double[][] neueTemperatur = new double[100][100];
            int i = 0, j = 0;
    
            for (i=0;i<=99;i++)
            {
                for (j=0;j<=99;j++)aktuelleTemperatur[i][j] = 100;
            }
    
            // Allen Elementen von aktuelleTemperatur 100 zugewiesen
    
    
            double unten, oben, rechts, links, U;
            int T, t=0;
            unten = aktuelleTemperatur[i+1][j];
            oben = aktuelleTemperatur[i-1][j];
            links = aktuelleTemperatur[i][j-1];
            rechts = aktuelleTemperatur[i][j+1];
            U = 20;
    
            System.out.println("How many Timesteps?");
            T = sc.nextInt();
    
            for (t=T;t>=1;t--)
            {
                double maxTemp;
    
    
            for (i=0;1<=99;i++)
            {
                for (j=0;j<=99;j++)
                {
                    if (j==0 & i==0)
                    {
                        neueTemperatur[i][j]=((1.0/5.0)*(aktuelleTemperatur[i][j] 
                        + U + U + rechts + links));
                    }    
                    else
                    if (j==0 & i==99)
                    {
                        neueTemperatur[i][j]=((1.0/5.0)*(aktuelleTemperatur[i][j] +
                        U + U + rechts + oben));
                    }
                    else
                    if (j==99 & i==0)
                    {
                        neueTemperatur[i][j]=((1.0/5.0)*(aktuelleTemperatur[i][j] +
                        U + U + links + unten));
                    }
                    else
                    if (j==99 & i==99)
                    {
                        neueTemperatur[i][j]=((1.0/5.0)*(aktuelleTemperatur[i][j] + 
                        U + U + links + oben));
                    }
                    else
                    if (j==99)
                    {
                        neueTemperatur[i][j]=((1.0/5.0)*(aktuelleTemperatur[i][j] +
                        U + links + oben + unten));
                    }
                    else
                    if (i==99)
                    {
                        neueTemperatur[i][j]=((1.0/5.0)*(aktuelleTemperatur[i][j] +
                        U + oben + links + rechts));
                    }
                    else 
                    if (j==0)
                    {
                        neueTemperatur[i][j]=((1.0/5.0)*(aktuelleTemperatur[i][j] +
                        U + oben + rechts + unten));
                    }
                    else
                    if (i==0)
                    {
                        neueTemperatur[i][j]=((1.0/5.0)*(aktuelleTemperatur[i][j]
                         + U + unten + rechts + links));
                    }
                    else
                    neueTemperatur[i][j] = ((1.0/5.0)*(aktuelleTemperatur[i][j] + 
                    unten + rechts + links + oben));
    
    
                }  // Close For2    
            }  // Close For1
            System.out.println("UNREACHABLE STATEMENT? WTF!?!");  
            for (i=0;i<=99;i++)
            {
                for (j=0;j==99;j++)
                {
                    aktuelleTemperatur[i][j]=neueTemperatur[i][j];
                }
            }
    
            for (i=0;i==99;i++)
            {
                for (j=0;j==99;j++)
                {
                    if (aktuelleTemperatur[i][j]>aktuelleTemperatur[i][j+1])
                    maxTemp = aktuelleTemperatur[i][j+1];
                }
            }
        } // Close T For
        } // Close Main
    
    
    } // Close Class
    Alles anzeigen

    Fmg
    Grammo

  • jeuneS2
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    Punkte
    1.227
    Beiträge
    238
    • 27. November 2007 um 14:27
    • #2

    Formatiere bitte deinen Code.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Grammostola
    2
    Grammostola
    Mitglied
    Punkte
    30
    Beiträge
    5
    • 27. November 2007 um 14:34
    • #3

    Sorry,

    und editiert :)

  • jeuneS2
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    Punkte
    1.227
    Beiträge
    238
    • 27. November 2007 um 14:38
    • #4
    Code
    for (i=0;1<=99;i++)

    sollte wohl eher

    Code
    for (i=0;i<=99;i++)

    heißen.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Grammostola
    2
    Grammostola
    Mitglied
    Punkte
    30
    Beiträge
    5
    • 27. November 2007 um 14:40
    • #5

    Ich sehe gerade keinen Unterschied zwischen den beiden Zeilen?

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 27. November 2007 um 14:40
    • #6
    Code
    for ([B]T=T[/B];T>=1;T--)

    soll das wirklich so sein?

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Grammostola
    2
    Grammostola
    Mitglied
    Punkte
    30
    Beiträge
    5
    • 27. November 2007 um 14:42
    • #7

    for (t=T;t>=1;t--) geht das eher?

    @ jeunes ich sehe leider nach wie vor keinen unterschied zwischen den beiden von dir geposteten Zeilen :frowning_face:

  • jeuneS2
    11
    jeuneS2
    Mitglied
    Reaktionen
    17
    Punkte
    1.227
    Beiträge
    238
    • 27. November 2007 um 14:42
    • #8
    Zitat von Grammostola

    Ich sehe gerade keinen Unterschied zwischen den beiden Zeilen?

    In der oberen wird überprüft ob die Zahl 1 (eins) kleiner gleich 99 ist, und das stimmt wohl immer. Unten wird überprüft ob die Variable i kleiner gleich 99 ist.

    Zitat von Kampi
    Code
    for ([B]T=T[/B];T>=1;T--)

    das glaub ich nicht tim.


    Warum? Ist zwar nicht besonders sinnvoll, aber gültiger Code und mit Sicherheit nicht für den Fehler verantwortlich.

    Why bother spending time reading up on things? Everybody's an authority, in a free land.

  • Grammostola
    2
    Grammostola
    Mitglied
    Punkte
    30
    Beiträge
    5
    • 27. November 2007 um 14:47
    • #9

    ouch 1 mit i verwechselt ok das könnte der Fehler sein, gleich mal testen.


    und das war natürlich auch der Fehler.


    Oh mann....


    Vielen Dank.
    Da les ich mir das Programm 2 Dutzend mal durch und sowas fällt mir nicht auf.
    Unter der Vorraussetzung KANN er ja nie über diese Schleife hinaus kommen. Blöder Fehler.

    Danke Jungs :winking_face:

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 27. November 2007 um 14:59
    • #10
    Zitat von jeuneS2


    Warum? Ist zwar nicht besonders sinnvoll, aber gültiger Code und mit Sicherheit nicht für den Fehler verantwortlich.

    ist mir schon klar dass 'T=T' gueltig ist, hab im eifer des gefechtes

    Code
    T = sc.nextInt();

    ueberlesen und gedacht er verwendet ein nicht initialisiertes 'T'. mein fehler.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung