1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Ich finde meinen Fehler nicht :(

  • Grammostola
  • 27. November 2007 um 14:15
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Grammostola
    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 :(

    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
    Punkte
    1.227
    Beiträge
    238
    • 27. November 2007 um 14:27
    • #2

    Formatiere bitte deinen Code.

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

    Sorry,

    und editiert :)

  • jeuneS2
    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.

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

    Ich sehe gerade keinen Unterschied zwischen den beiden Zeilen?

  • Kampi
    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?

  • Grammostola
    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 :(

  • jeuneS2
    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.

  • Grammostola
    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 ;)

  • Kampi
    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.

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum