Java komme mit meinem Programm nicht weiter (Schachbrett/Reiskörner/Gewicht)

Xevi

Newbie
Registriert
Juli 2012
Beiträge
5
Hey leute ich brauche hilfe da ich nur ein Praktikant bin habe ich nur wenig ahnung vom Programmieren und ich soll es halt lernen weil es mir im Studium bzw in der ausbildung helfen soll... hier das Programm :

Code:
import java.io.*;
import java.util.ArrayList;

public class schachbretta{

    public static void main ( String Eingabe[] ) {



    int eingabe1 = 0;
    int eingabe2 = 'z';
    String input = null;

 

        //Prüfen ob wirklich zwischen 1 und 8 
do {System.out.println ("Geben sie den Wert fuer die Zeile ein[1-8]: ");
        
        try {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            input = bufferedReader.readLine();
            eingabe1 = Integer.parseInt(input);
        } 
        
        catch (NumberFormatException ex) {
           System.out.println("Keine Zahl !");
        } 
        catch (IOException e) {
            e.printStackTrace();
        }     
       }
 while (eingabe1 > 8 | eingabe1 < 1);




do {System.out.println ("Geben sie den Wert fuer die Spalte ein[A-H]: ");
        
        try {
        eingabe2 = System.in.read();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
}
     while(eingabe2 > 72|eingabe2 < 65);




    
     
     System.out.println ("Eingabe1 ist: " + eingabe1);
     System.out.println ("Eingabe2 ist: " + eingabe2);     
     System.out.println ("Eingabe2 ist: " + String.valueOf((char)eingabe2));
     
     // Bezeichnungen für A-H
		double Felder[][] = new double[8][8];
		
		
		Felder[0][0] = 1;		
		
			for (int i = 0; i < 8; i++)
			{
				for (int j = 0; j < 8; j++)
				{
				if (!(i == 0 & j == 0 )) 

				{



    // for schleife für i & j < 8
                                    if (j>=1) 
                                    {
                                    Felder[i][j] = Felder[i][j-1] * 2;
                                    }
                                    else	
                                    {
                                    Felder[i][j] = Felder[i-1][7] * 2;
                                    }
				}
                                // Rechenweg
				
				int Ausgabe1 = i+1;
				int Ausgabe2 = 65+j;
                                double Reiskorn = 0.03;
                                
                                double Gewichte[][] = new double[6][2];
				
                                Gewichte[0][0] = 1000;
                                
                                String Klassen[][] = new String[6][2];
                                
                             
                                
				if (eingabe1 == Ausgabe1 && Ausgabe2 == eingabe2)
					{
					System.out.println(i+1+";"+String.valueOf((char)Ausgabe2)+ "\t");
					System.out.println(Felder[i][j] + "\t");
                                        
                                        double Gewicht = (Felder [i][j] * Reiskorn);
                                        double Gewicht1 = (Gewicht/1000);
                                        double Gewicht2 = (Gewicht1/1000);
                                        double Gewicht3 = (Gewicht2/1000);
                                        double Gewicht4 = (Gewicht3/(1000));
                                        double Gewicht5 = (Gewicht4/(1000));
                                       
                                        
                                            if ((Gewicht <=999));
                                            {System.out.println ("Das Gewicht betraegt: " + Gewicht + " g");}
                                            
                                                                                     
                                            if (Gewicht <1000)
                                            break;
                                            
                                            if ((Gewicht >= 1000));
                                            {System.out.println ("Das Gewicht1 betraegt: "+ Gewicht1 + " Kg");}
                                            
                                            if (Gewicht1 <1000)
                                            break;
                                            
                                            
                                            if ((Gewicht1 >= 1000));
                                            {System.out.println ("Das Gewicht2 betraegt: "+ Gewicht2 + " t");}
                                            
                                            if (Gewicht2 <1000)
                                            break;
                                            
                                            if ((Gewicht2 >= 1000));
                                            {System.out.println ("Das Gewicht3 betraegt: "+ Gewicht3 + " Kt");}
                                            
                                            if (Gewicht3 <1000)
                                            break;
                                            
                                            if ((Gewicht3 >= 1000));
                                            {System.out.println ("Das Gewicht4 betraegt: "+ Gewicht4 + " Gt");}
                                            
                                            if (Gewicht4 <1000)
                                            break;
                                            
                                            if ((Gewicht4 >= 1000));
                                            {System.out.println ("Das Gewicht5 betraegt: "+ Gewicht5 + " Mt");}
                                            
                                            if (Gewicht5 <1000)
                                            break;

        
                     
                                                }
					}
				}
			}
                }
Dieses Programm ist über die Geschichte mit dem Schachbrett und den Reiskörnern mit dem Zusatz, dass ich das Gewicht ausrechnen soll.
Soweit wäre es fertig.., allesdings soll ich das mit den Gewichten mit einem Array machen .. :/


Danke schonmal im vorraus :)
 
Hab mir den Code noch nicht ganz angeschaut, aber mit fällt direkt mal auf, dass du in Zeile 31 geschrieben hast: größer 8 und kleiner 1. Ist das so gewollt?
 
Hallo und willkommen im Forum. Das hier ist allerdings kein "Ich habe eine Aufgabe bekommen, löst sie mir"-Forum, sondern ein Forum mit "Ich habe eine konkrete Frage, wo ich nicht weiterkomme". Die konkrete Frage kann ich bei dir nicht sehen. Stell die Frage bitte genauer, was du nicht hinbekommst.

Zudem wäre es nett, wenn die Formatierung verbessern würdest und die Semikolons (Strichpunkte) am Ende einiger IF-Ausdrücke machen nur begrenzt Sinn (z.B. " if ((Gewicht4 >= 1000));").

@jimknils: Da steht nicht und sondern oder... das macht schon Sinn. So lange es eben nicht im gültigen Bereich ist, soll die Schleife fortgesetzt werden... wobei es sinnvoller ist, den ||-Operator zu nutzen statt dem |.
 
Zuletzt bearbeitet:
Hallo, danke schonmal für die antworten..,

1. Ich brauche im grunde nur einen denkanstoß wie ich das genau anstellen soll :/

Der Zählt halt die Reiskörner und ich soll für diese dann noch das Gewicht angeben ..., allerdings soll er direkt umwandeln und nicht alles anzeigen also in der ausgabe steht beim letzten feld z.b.

x g
x kg
x t
x kt

usw.

das soll er also nicht machen er soll beim letzten feld nur so umwandeln das nur 1 wert da steht und das mit einem Array machen.

2. Ich weiß das die schreibart echt nicht gut aussieht, aber wie ich es schon erwähnt habe bin ich nur ein Praktikant und lerne im Praktikum programmieren.
Ich hatte also absolut kein vorwissen.
Also habe ich erst seid einer woche einen einblick erhalten und soll mein wissen vertiefen, also werde ich mich noch mit der ganzen syntax etc auseinander setzen.
 
Zuletzt bearbeitet:
nur nochmal zum verständnis du willst das gewicht des gesamten schachbretts oder nur das eines einzelnen feldes?
die eingabe legt das Feld fest welches du wiegen möchtest?
ich denke dass du mit 2 Arrays 8x8 (eins für die reiskörner und eins für die feldgewichte) machen musst, diese mit daten füllen und dann kommt die abfrage, die das gewicht liefert: z.b."H6: xy reiskörner = xy kg/tonnen"
 
Wenn ich mein Programm starte fragt er direkt welches feld er ausgeben soll genau dieses welches ich da angebe soll er mir ausgeben ..,

also so wie du schon gesagt hast H6 = xy Reiskörner = xy kg z.b.


aber ich brauche wie gesagt nur einen denkanstoß.., ein mitarbeiter hat mir schon den Tipp gegeben es mit "ArrayList" zu probieren ..,
 
Zuletzt bearbeitet:
Ich würde wie schon oben geschrieben ein 2. 8x8 Array nehmen, das dann wie dein 1. Array nur hält mit den gewichten. Dann noch eine Methode wheightToString(double wheight), die Dir dann vom double wheight den entsprechenden Text liefert...so wie du das schon gemacht hast...und am ende nur noch den String zusammensetzen und ausgeben

Oder geht auch ganz ohne 2.Array,indem du das gewicht erst im AusgabeString berechnest
 
Zuletzt bearbeitet:
Hab mir grad mal den Datentyp ArrayList angeschaut, wenn du da mal googelst findest was dieser tut.
 
Ich verstehe nicht. Es gibt eine "ganz" einfache Formel welche dir die Anzahl der Reiskörner auf dem n-ten Feld ausgeben kann und eine Formel welche dir die Summe aller Reiskörner von allen Feldern bis zum n-ten Feld ausgeben kann.
 
Ich danke schonmal für die Hilfe, habs auch nun hinbekommen sieht letztendlich so aus :
Code:
import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class schachbretta{

    public static void main ( String Eingabe[] ) {



    int eingabe1 = 0;       
    int eingabe2 = 'z';
    String input = null;
    double Reiskorn = 0.03;
    int k = 0 ;
 

      
do {System.out.println ("Geben sie den Wert fuer die Zeile ein[1-8]: "); 
        
        try {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            input = bufferedReader.readLine();
            eingabe1 = Integer.parseInt(input);
        } 
        
        catch (NumberFormatException ex) {
           System.out.println("Keine Zahl !");
        } 
        catch (IOException e) {
            e.printStackTrace();
        }     
       }
 while (eingabe1 > 8 | eingabe1 < 1); 



do {System.out.println ("Geben sie den Wert fuer die Spalte ein[A-H]: "); 

        try {
            eingabe2 = System.in.read(); 
            }
        catch (IOException e) {
            e.printStackTrace();
            }
}
     while(eingabe2 > 72|eingabe2 < 65); 




    
     
     System.out.println ("Zeile ist: " + eingabe1);
     System.out.println ("Spalte ist: " + String.valueOf((char)eingabe2));
     
  
		double Felder[][] = new double[8][8];
		
		
		Felder[0][0] = 1;		
		
			for (int i = 0; i < 8; i++)
			{
				for (int j = 0; j < 8; j++)
				{
                                    if (!(i == 0 & j == 0 )) 

                                    {



    
                                        if (j>=1) 
                                        {
                                            Felder[i][j] = Felder[i][j-1] * 2;
                                        }
                                        else	
                                        {
                                            Felder[i][j] = Felder[i-1][7] * 2;
                                        }
                                    }
                              
				
				int Ausgabe1 = i+1;
				int Ausgabe2 = 65+j;
                                
                                
                                                         
                              
                            
                             ArrayList Gewicht6 = new ArrayList();
                                Gewicht6 .add ("g");
                                Gewicht6 .add ("kg");
                                Gewicht6 .add ("t");
                                Gewicht6 .add ("kt");
                                Gewicht6 .add ("Gt");
                                Gewicht6 .add ("Mt");
                                
				if (eingabe1 == Ausgabe1 && Ausgabe2 == eingabe2) 
					{
					System.out.println("Auf dem Feld "+eingabe1+";"+String.valueOf((char)eingabe2)+ " liegen\t"+Felder[i][j] +" Reiskoerner"+ "\t");
                                        double Gewicht[] = new double[6]; 
                                        k = 0 ;     
                                        Gewicht[k] = (Felder [i][j] * Reiskorn);
                                        
                                        if ((Gewicht[k] <=999))
                                        {System.out.println ("Das Gewicht betraegt: " + Gewicht[k] +Gewicht6 .get(k));}
                                                
                                            else {     
                                        
                                        for (k=1; k <= 5;k++)
                                        {Gewicht[k] =(Gewicht[k-1]/1000) ; 
                                        
                                        if ((Gewicht[k]>1 && Gewicht[k] <=999))
                                            {System.out.println ("Das Gewicht betraegt: " + Gewicht[k] +Gewicht6 .get(k));}
                                        
                                        
                                                            }
                                                      }
                                                } 
					}
				} 
			}
                }

Kann geclosed werden
 
Zurück
Oben