Ausgeben der Eingabewerte einer Methode

Status
Nicht offen für weitere Antworten.

Gabbiadini

Mitglied
Hallo zusammen,
wie ihr gleich seht, bin ich noch blutiger Java-Anfänger. Ich zerbreche mir seit drei Stunden den Kopf, und komme einfach nicht weiter...im Internet und in meinem Java-Buch hab ich keinen funktionierenden Ansatz gefunden.

Ich habe die Aufgabenstellung, in einer separaten Methode double-Werte einzulesen, und diese in der main() Methode auszugeben bzw. in anderen Methoden weiter zu verarbeiten. Allerdings scheitere ich schon an der Ausgabe in main() ???:L

Meine Methode zum Einlesen sieht derzeit folgendermaßen aus:
Code:
class EIN
{
	static double[] messein ()		
	{
		double eingabe[];
		int i=1, abbruch=0;		
		eingabe=new double[8];		
		do
		{
			System.out.print("Bitte geben Sie einen Messwert ein: ");		
			eingabe[i]=IO1.eindouble();
			i=i++;
			System.out.print("Bitte eine 1 eingeben, wenn weitere Berechnung erwuenscht: ");		 
			abbruch=IO1.einint();
			return eingabe;	
		}
		while (abbruch==1);		
	}		
}
*IO1 ist eine Methode zum Einlesen von Integer und Double-Werten, die ich vorgeben bekommen habe.


Wie hole ich mir jetzt die einzelnen Werte in die main() Methode hinüber, so daß nach Eingabe aller Werte diese nochmal ALLE ausgegeben werden? Bzw, daß ich sie weiterverarbeiten kann (Durchschnitt, etc)?

Wäre super, falls mich jemand auf den richtigen Ansatz bringen kann!

Thomas
 

Oskar

Aktives Mitglied
Hiho,

deine Methode wird bei jedem (sprich insbesondere beim ersten) Durchlauf der Schleife zurück in die aufrufende Methode springen. Das return sitzt an der "falschen" Stelle.

Wenn du das gesamte Array zurückgegeben haben willst sollte es wie folgt lauten:


Code:
class EIN
{
   static double[] messein ()      
   {
      double eingabe[];
      int i=1, abbruch=0;      
      eingabe=new double[8];      
      do
      {
          //...
      }
      while (abbruch==1);
      return eingabe;     
   }      
}

Jetzt gibt die Methode alle eingegebenen Werte zurück. Diese kannst du in der main-Methode in ein entsprechendes double Array verpacken.

So far... hope that helps.
Oskar
 

Gabbiadini

Mitglied
Danke für die Antwort - so hatte ich es zuerst auch schonmal gehabt.
Habe es jetzt wieder so wie von dir vorgeschlagen, aber ich bekomme es dennoch nicht hin. Ich weiß einfach nicht, wie ich die einzelnen Werte in der main() Methode ansprechen kann. Woher soll die main() Methode wissen, wieviele Werte sie ausgeben soll? Hier mal zwei von meinen zahlreichen Versuchen:


Code:
class programm16
{
	public static void main (String args[])	
	{
		double wert[];
		wert=new double[8];		
		wert=EIN.messein();		
		System.out.print(wert);
	}
}
...erzeugt folgende Ausgabe (egal welche und wieviele Werte ich eingebe): [D@14fe5c

Code:
class programm16
{
	public static void main (String args[])	
	{
		double wert[];
		int i=1;
		wert=new double[8];		
		wert=EIN.messein();		
		System.out.print(wert[i]);
	}
}
...wenn ich's so mache (daß es so nicht richtig sein kann, ist mir klar) wird immer nur der letzte der eingegebenen Werte ausgegeben.


Irgendwie werde ich das Gefühl nicht los, daß ich gewaltig ein Brett vor den Kopf habe :bahnhof:
 

SebiB90

Top Contributor
mach es mal so
Code:
class programm16 
{ 
   public static void main (String args[])    
   { 
      double []wert = EIN.messein();       
      for(int i = 0; i < wert.length; i++) {
        System.out.print(wert[i]); 
      }
   } 
}
ich bin jetzt nicht sicher ob das wert.length oder wert.length() heißt :oops:
musst du ausprobieren
 

SebiB90

Top Contributor
war mir nicht mehr sicher was es war
irgendwo gibt es aber auch length() nur wo weiß ich nich mehr
 

L-ectron-X

Gesperrter Benutzer
Die Klasse String hat z.B. eine solche Methode, um die Länge (Anzahl der Zeichen eines Strings) ermitteln zu können.
Code:
String str = "Beispiel";
int i = str.length();
 

Gabbiadini

Mitglied
Die Idee hört sich sehr gut an :)

Leider scheint's aber immer noch ein Problem zu geben - die Ausgabe damit erzeugt folgendes (damit's hier deutlicher wird mit println):

Code:
...
Bitte geben Sie einen Messwert ein: 7
Bitte eine 1 eingeben, wenn weitere Berechnung erwuenscht: 1
Bitte geben Sie einen Messwert ein: 4
Bitte eine 1 eingeben, wenn weitere Berechnung erwuenscht: 1
Bitte geben Sie einen Messwert ein: 3
Bitte eine 1 eingeben, wenn weitere Berechnung erwuenscht: 0

Ausgabe:
0.0
3.0
0.0
0.0
0.0
0.0
0.0
0.0
Der letzte Eingabewert steht stehts an der Stelle wo die 3 steht - die anderen werden nicht angezeigt. Liefert meine Methode evtl. nur einen einzigen double-Wert?
 

L-ectron-X

Gesperrter Benutzer
Ich habs ein wenig umgebaut. Den ganzen static Kram rausgehauen, eben so das IO-Tools-Zeug.
Du hast die Größe des double-Arrays begrenzt, daher gibts nun auch einen Test auf die Array-Dimensionen.
Wenn das Array voll ist, wird die Eingabe abgebrochen und das Array zurückgegeben.
Code:
import java.io.*;

public class EIN
{
   public double[] messein ()
   {
      double[] eingabe = new double[8];
      int i = 0;
      String abbruch = null; 
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      do
      {
         try {
            System.out.print("Bitte geben Sie einen Messwert ein: ");
            eingabe[i] = Double.parseDouble(br.readLine());
            i++; //hier lag der Fehler, entw. so oder i = i + 1; !!!
            System.out.print("Ist eine weitere Berechnung erwuenscht?  (j/n) ");
            abbruch = br.readLine();
         }
         catch(IOException e) {
            System.out.println("Fehler bei Eingabe");
         }
      }
      while (abbruch.equals("j") && i < eingabe.length);
      if(i == eingabe.length)
         System.out.println("Array voll! Keine weitere Eingabe moeglich!");
      
      return eingabe;
   }
}
Code:
public class Programm16 {
   public static void main (String args[]) {
      EIN ein = new EIN();
      double wert[] = ein.messein();
      for(int i = 0; i < wert.length; i++)
         System.out.println(wert[i]);
   }
}
 

Gabbiadini

Mitglied
Wow, vielen Dank. Das wäre echt nicht nötig gewesen!
Wenn ich's so benutze, bin ich allerdings nicht wirklich in der Lage zu erklären, wie es funktioniert :wink:

Danke auch für den Hinweis auf meinen Fehler mit "i++", doch ein ziemlich peinlicher Fehler :oops:

Daraufhin habe ich jedenfalls noch etwas probiert, und die Sache jetzt auch mit zusätzlicher Abfrage soweit am Laufen. Da gibt's sicher noch Verbesserungspotential, aber so ist's zumindest glaubwürdig, daß das Programm von mir stammt :D

Code:
class EIN
{
	static double[] messein ()		
	{
		double eingabe[];
		int i=1, anzahl=-1;		
		while (anzahl<1)
		{ 	System.out.print("Bitte geben Sie die Anzahl Ihrer Messwerte ein (mindestens 1): ");		 
			anzahl=IO1.einint();
			System.out.println();
		}		
		eingabe=new double[anzahl];		
		do
		{
		System.out.print("Bitte geben Sie den "+i+". Messwert ein: ");		
		eingabe[i-1]=IO1.eindouble();			
		i++;
		}
		while (i<=anzahl);
		System.out.println();
		return eingabe;		
	}		
}


Code:
class programm16
{
   public static void main (String args[])
   {
      double wert[] = EIN.messein();
      for(int i=0; i<wert.length; i++)
      System.out.println(wert[i]);
   }
}

Jetzt kann ich mich also an die komplizierteren Teile des Programms begeben 8)


Danke an alle für die Hilfe, alleine säße ich vermutlich immer noch verzweifelt vorm Rechner :toll:
 

Gabbiadini

Mitglied
Habe dazu jetzt doch noch eine weitere Frage.

Ich habe mir das ganze jetzt so vorgestellt, daß ich den Benutzer zuerst alle Werte eingeben lasse, und anschließend verschiedene Sachen mit diesen Werten anstelle (Sortieren, Mittelwert, etc.).

Dafür habe ich für das Sortieren, den Mittelwert, etc jeweils wieder eine eigene Methode programmiert, die ich aus main() aufrufe. Das Einbinden klappt auch wunderbar - allerdings mit einem Problem: Es werden nicht die bereits eingegebenen Werte übernommen, sondern der Benutzer wird bei jeder einzelnen "Untermethode" wieder zu einer neuen Eingabe aufgefordert.

Was mache ich falsch? Mein Java-Buch ist für diese Geschichte nicht all zu hilfreich :cry:


Hier mal etwas Quellcode, der Übersichtlichkeit halber nur von der Eingabemethode und der "Mittelwert"-Methode

Eingabemethode
Code:
class EINGABE
{
	static double[] messein()		
	{
		double eingabe[];
		int i=1, anzahl;		
		do
		{ 	System.out.print("Bitte geben Sie die Anzahl Ihrer Messwerte ein (mindestens 1): ");		 
			anzahl=IO1.einint();
			System.out.println();
		}
		while (anzahl<1);			
		eingabe=new double[anzahl];		
		do
		{		
		System.out.print("Bitte geben Sie den "+i+". Messwert ein: ");		
		eingabe[i-1]=IO1.eindouble();			
		i++;
		}
		while (i<=anzahl);
		return eingabe;
	}		
}


Mittelwert - mwert() :
Code:
class MITTELWERT
{
   static double mwert()
   {
      double addition=0, mittel=0;
      double wert[] = EINGABE.messein();
      for(int i=0; i<wert.length; i++)
      {
      addition=addition+wert[i];
      }
      mittel=addition/wert.length;
	  return mittel;
   }		
}


Aus der main() Methode:
Zunächst rufe ich die Eingabemethode auf:
Code:
EINGABE.messein();

Dann die Ergebnisse der mwert() Methode (was auch so klappt, aber wie gesagt vorher wieder eine Neueingabe fordert):
Code:
System.out.println("Das arithmetische Mittel betraegt: "+MITTELWERT.mwert());


Ich hoffe ich blamiere mich nicht all zu sehr, wenn ich mir so die anderen Anfängerfragen ansehe.
Wäre trotzdem super, wenn mir wieder jemand auf die Sprünge helfen könnte! :)
 
B

Beni

Gast
Betrachten wir mal diese Methode:
Code:
class MITTELWERT
{
   static double mwert()
   {
      double addition=0, mittel=0;
      double wert[] = EINGABE.messein();  // << hier forderst du den Benutzer auf, Eingaben zu machen
      for(int i=0; i<wert.length; i++)
      {
      addition=addition+wert[i];
      }
      mittel=addition/wert.length;
     return mittel;
   }      
}


Und jetzt versuch mal sowas:
Code:
public static void main( String[] args ){
  double[] wert = EINGAGE.messein();
  MITTELWERT.mwert( wert );
  SUMME.summe( wert );  // << nach demselbem Schema
}
Code:
class MITTELWERT
{
   static double mwert( double[] wert )
   {
      double addition=0, mittel=0;
      for(int i=0; i<wert.length; i++)
      {
      addition=addition+wert[i];
      }
      mittel=addition/wert.length;
     return mittel;
   }      
}
Dann wird "EINGABE.messein" nur einmal aufgerufen, und somit muss der Benutzer nur einmal seine Eingaben machen.
 

Gabbiadini

Mitglied
Hab die Methode also komplett an der falschen Stelle aufgerufen...vielen Dank, jetzt habe ich es genau so, wie ich es haben wollte :)

Allmählich komme ich doch langsam dahinter...mit der Betonung auf langsam :autsch:
 

sliwalker

Top Contributor
Hoi,

ja, die Methode hast Du an der falschen Stelle aufgerufen.
So wie Du es gemacht hast, legst Du in Mittelwert nochmal ein neues Array an.
Das ist dann aber in der Klasse Summe nicht bekannt.

Deshalb musst Du es in main anlegen und allen Methoden mit übergeben.

greetz
SLi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
Glühlampe Usereingabe in der gleichen Zeile ausgeben Java Basics - Anfänger-Themen 6
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Wortkette in umgekehrter Rheinfolge + in neuer Zeile ausgeben Java Basics - Anfänger-Themen 4
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
Tommilee Char ausgeben Java Basics - Anfänger-Themen 5
K Geldbetrag in Euro + Cents ausgeben Java Basics - Anfänger-Themen 24
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
JavaBeginner22 Wort mit der größten Länge ausgeben Java Basics - Anfänger-Themen 4
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
D Grafik auf ein JPane ausgeben. Java Basics - Anfänger-Themen 6
berserkerdq2 Methodenaufrufstapel ausgeben, was ist das? Java Basics - Anfänger-Themen 2
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
Robin Gentele XML von Webserver lesen und ausgeben Java Basics - Anfänger-Themen 5
W Array ausgeben Java Basics - Anfänger-Themen 29
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
S Schachbrettmuster ausgeben Java Basics - Anfänger-Themen 3
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Array rückwärts ausgeben Java Basics - Anfänger-Themen 2
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
Kotelettklopfer Stringbuilder mit print ausgeben Java Basics - Anfänger-Themen 83
L Methoden Rückgabewert Verbergen / nicht mit ausgeben Java Basics - Anfänger-Themen 4
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
S Primzahlen in Array ausgeben Java Basics - Anfänger-Themen 14
O Anzahl Datensätze ausgeben Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
C Matrix mit Array ausgeben Java Basics - Anfänger-Themen 6
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
C Methode Grouping mit Werten ausgeben Java Basics - Anfänger-Themen 2
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
J Koordinaten per Schleife ausgeben Java Basics - Anfänger-Themen 6
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
C Erste Schritte Muster ausgeben in der Konsole - großes V Java Basics - Anfänger-Themen 5
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
M Wie kann ich hier den Abstand ausgeben? Java Basics - Anfänger-Themen 3
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
U Teilergebniss mit 0 nicht ausgeben Java Basics - Anfänger-Themen 3
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
C das Doppelte des Wertes in der Console ausgeben Java Basics - Anfänger-Themen 10
J Tic Tac Toe ausgeben Java Basics - Anfänger-Themen 4
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
H Ungerade Zahlen ausgeben von 1 bis 1000 Java Basics - Anfänger-Themen 8
N Tabelle schön in der Konsole ausgeben Java Basics - Anfänger-Themen 5
P Ziffer in der Mitte ausgeben Java Basics - Anfänger-Themen 12
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
J Anführungszeichen ausgeben Java Basics - Anfänger-Themen 3
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
W Erste Schritte Rekursionen Aufrufe ausgeben Java Basics - Anfänger-Themen 6
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben