Java Programm

M

mike6996

Mitglied
Thread Starter
Dabei seit
23.04.2005
Beiträge
34
Reaktionspunkte
0
Hi,
muss grad ein Programm für die Uni schreiben. Leider funktioniert es nur, wenn ich alles in die Main-Methode packe.
Evtl. könnt ihr mir helfen...
Stelle mal meinen Quellcode rein und die Aufgabenstellung.

Danke schonmal für eure Mithilfe


Aufgabenstellung:
Schreiben Sie ein Java-Programm, das 16 Integerzahlen zeilenweise in ein 4x4-Array einliest und dann teste, ob irgendwo in einer Zeile oder Spalte an benachbarten Positionen gleiche Werte stehen!

Mein bisheriges Ergebnis:

import java.io.*;

public class PropraUe294
{
static int Dimension = 4;

public static void main(String[] argv)
{
int dreieck [][] = new int [Dimension][Dimension];
einlesen();

//Auswertung
for (int i = 0; i < Dimension; i++){
for (int j = 0; j <Dimension; j++){
if (dreieck[j] == dreieck[j]){
System.out.println("dies sind "+dreieck[j]+ "gleiche Zahlen");
}
}
}

}

public void einlesen() throws IOException
{ int dreieck [][] = new int [Dimension][Dimension];
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
//Eingabe von den verschiedenen Zahlen
String eingabe;
for(int i = 0; i < Dimension; i++){
for(int j = 0; j < Dimension; j++){
System.out.println("Bitte geben sie eine Zahl ein");
eingabe = tastatur.readLine();
dreieck[j] = Integer.parseInt(eingabe);
}
}
}

}
 
Ich habe es nur mal überflogen, aber static Variablen lassen sich auch nur aus static Methoden ansprechen.
Schreib einfach eine Methode, die alles das macht, was in der main steht, entferne das static vor der Variablen und rufe die neu erstellte Methode aus der main aus...

War das dein einziges Problem? ANsonsten müsste das doch eigentlich wie gewollt funktionieren...
 
Also wenn ich alles in die Main-Methode reinschreib dann funktioniert es ohne Probleme... Genau, das was du beschrieben hast war vorher schon möglich, aber ich wollte von der Main-Methode auf eine Methode zugreifen... Weiß nicht, ob es überhaupt funktioniert, aber es wäre schön, wenn es gehen würde, dass ich das Einlesen und das Vergleichen von der Main-Methode aus aufrufen könnte...
Vielen dank aber schon für die Antworten
 
Zuletzt bearbeitet:
aber ich wollte von der Main-Methode auf eine Methode zugreifen... Weiß nicht, ob es überhaupt funktioniert, aber es wäre schön, wenn es gehen würde, dass ich das Einlesen und das Vergleichen von der Main-Methode aus aufrufen könnte...

Das funktioniert und zwar genau so, wie ich geschrieben habe. Du erstellst eine Methode einlesen() und eine vergleiche().
Dann rufst du die vergleiche() genau so auf wie die einlesen().
Wenn wir aneinander vorbeireden, dann probiers mal genauer zu erklären...
Gruß
 
hiho

wie wäre es den wenn du das array als klassenvariable deklarierst.
dann kannst du sicher sein das das array in jeder methode die du aufrufst auch gleich ist.
und das static vor dem deminsion weg.

und viel glück ...

wenn es nicht geht poste mal bitte die fehlermeldung von der vm ... da kann man mehr raus sehen!
 
Ich bin jetzt hier weg.
HIer sind mal ein paar SChritte, die du befolgen solltest:

- Erstelle die beiden Methoden
- Erstelle in der main ein Objekt von deiner Klasse und rufe darüber die Methoden auf
- Dann solltest du dir noch mal deine AUswertung angucken, ob die denn Sinn macht... (IMHO relativ wenig...)
- Du solltest dir dann mal in Ruhe geschachtelte Array angucken...
- Ich empfehle: java ist ein Insel (online umsonst...) --> google

Viel Spass noch...

PS: Welche UNi?
 
Wie kann ich das Array als Klassenvariable deklarieren?
@FrediFrenson
Ich glaube wir reden nicht aneinader vorbei, aber ich weiß nicht, wie ich die static auflösen kann so dass keine Fehlermeldung kommt.
Bin in der Uni Passau

Fehlermeldung ist bis jetzt: non-static method einlesen() cannot be referenced from a static context
einlesen();
 
import java.io.*;
public class egal {

int Dimension;


public egal(int dim){
this.Dimension =dim;
}

public static void main(String[] args) {
egal e = new egal(4);

try {
e.auswerten(e.einlesen());
} catch (IOException e1) {
System.out.println(e1.getMessage());
}

}

public void auswerten(int[][] dreieck){
for (int i = 0; i < Dimension; i++){
for (int j = 0; j <Dimension; j++){
if (dreieck[j] == dreieck[j]){
System.out.println("dies sind "+dreieck[j]+ "gleiche Zahlen");
}
}
}
}

public int[][] einlesen() throws IOException{
int[][] dreieck = new int [Dimension][Dimension];
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
// Eingabe von den verschiedenen Zahlen
String eingabe;
for(int i = 0; i < Dimension; i++){
for(int j = 0; j < Dimension; j++){
System.out.println("Bitte geben sie eine Zahl ein");
eingabe = tastatur.readLine();
dreieck[j] = Integer.parseInt(eingabe);
}
}
return dreieck;
}

}
 
So, Formatierungen sind leider weg.

So sieht das Grundgerüst aus. Wie gesagt, mach dir nochmal Gedanken, wie du den Vergleich anstellen willst. Es macht im Moment nicht viel Sinn. Du vergleichst (if (dreieck[j] == dreieck[j]) zwei gleiche Zahlen und gibst dann aus, dass sie gleich sind...
Aber das ist glaube ich besser, dass du auf die Lösung kommst. Kopier dir mal das Gerüst in deine IDE und dann kannst du dich um das wesentliche kümmern...

Die SChritte oben empfehle ich trotzdem...
 
Vielen Dank,
der Vergleich ist leider während meiner Arbeit nur verrückt.
Hast mir wirklich sehr geholfen. Der Rest klappt ohne Probleme.

Mike
 
alles klar das ist es dann auch ...

also ändere das mal so ab:

du machst zwei methoden einlesen und vergleich als (private void .... )
und das array schreibst du gleich nach dem klassen kopf:

public class PropraUe294
{
int Dimension = 4;
int dreieck [][] = new int [Dimension][Dimension];

ach weiste was ich schreib das gleich mal richtig :
-------------------------------------------
import java.io.*;

public class PropraUe294
{
int Dimension = 4;
int dreieck [][] = new int [Dimension][Dimension];


public static void main(String[] argv)
{
PropraUe294 pro = new PropraUe294();
pro.einlesen();
pro.vergleichen();
}

private void vergleichen(){
for (int i = 0; i < Dimension; i++){
for (int j = 0; j <Dimension; j++){
if (dreieck[j] == dreieck[j]){
System.out.println("dies sind "+dreieck[j]+ "gleiche Zahlen");
}
}
}

}

public void einlesen() throws IOException
{ int dreieck [][] = new int [Dimension][Dimension];
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
//Eingabe von den verschiedenen Zahlen
String eingabe;
for(int i = 0; i < Dimension; i++){
for(int j = 0; j < Dimension; j++){
System.out.println("Bitte geben sie eine Zahl ein");
eingabe = tastatur.readLine();
dreieck[j] = Integer.parseInt(eingabe);
}
}
}

}

teste mal ob das so geht habe das jetzt nicht in meine entwicklungsumgebung getestet.

und wieder viel glück.
 
ok zu langsam :)
 
@matschex
Leider funktioniert deine Version auch nicht. hatte es auch schon mal so..
Kommt leider noch 1 Fehler:
hängt sich beim pro.einlesen(); auf...
Bin schon richtig am Verzweifeln...
Vielen Dank aber schon für die Mitarbeit!!!
 
also so ist es ausführbar getestet mit entwicklungsumgebung aber deine vergleichen methode macht alles andere aber nicht vergleichen ob irgendwas gleich ist in einer reihe oder spalte...

import java.io.*;

public class PropraUe294
{
int Dimension = 4;
int dreieck [][] = new int [Dimension][Dimension];


public static void main(String[] argv)
{
PropraUe294 pro = new PropraUe294();
try {
pro.einlesen();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pro.vergleichen();
}

private void vergleichen(){
for (int i = 0; i < Dimension; i++){
for (int j = 0; j <Dimension; j++){
if (dreieck[j] == dreieck[j]){
System.out.println("dies sind "+dreieck[j]+ "gleiche Zahlen");
}
}
}

}

public void einlesen() throws IOException
{ int dreieck [][] = new int [Dimension][Dimension];
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
//Eingabe von den verschiedenen Zahlen
String eingabe;
for(int i = 0; i < Dimension; i++){
for(int j = 0; j < Dimension; j++){
System.out.println("Bitte geben sie eine Zahl ein");
eingabe = tastatur.readLine();
dreieck[j] = Integer.parseInt(eingabe);
}
}
}

}
 
Danke, für deine Mithilfe

Habe jetzt die Vergleichmethode zum Vergleich gebracht.
Hier meine Lösung:
import java.io.*;

public class PropraUe294{
static int Dimension = 4;

public static void main(String[] argv) throws IOException{
int[][] dreieck = einlesen();

vergleich(dreieck);

printOut(dreieck);

}

private static void vergleich(int[][] dreieck){
for (int i = 0; i < Dimension; i++){
for (int j = 0; j <Dimension; j++){
if (dreieck[j] == dreieck[i+1][j]|| dreieck[j] == dreieck[j+1]){
System.out.println("dies sind " + dreieck[j] + "gleiche Zahlen");
}
}
}
}

private static void printOut(int[][] dreieck){
for(int i=0; i<Dimension; i++){
for (int j=0; j<Dimension; j++){
System.out.print("["+dreieck[j]+"]");
}
System.out.println();
}
}

private static int[][] einlesen() throws IOException {
int[][] dreieck = new int [Dimension][Dimension];
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));
//Eingabe von den verschiedenen Zahlen
String eingabe;
for(int i = 0; i < Dimension; i++){
for(int j = 0; j < Dimension; j++){
System.out.println("Bitte geben sie eine Zahl ein");
eingabe = tastatur.readLine();
dreieck[j] = Integer.parseInt(eingabe);
}
}
return dreieck;
}

}

Ohne eure Mithilfe hätte ich es niiiieeeee geschafft. Vielen Dank!!!
Ist ein super Forum hier!!!
 
alles klar so hätte ich das auch gemacht aber wollte dir auch noch was über lassen :)

also viel spass noch beim studium und geniesse die zeit ... ich bin ja bald durch !!!
 
Zurück
Oben Unten