matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenJavaMultiplizieren und Fakultät
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Deutsch • Englisch • Französisch • Latein • Spanisch • Russisch • Griechisch
Forum "Java" - Multiplizieren und Fakultät
Multiplizieren und Fakultät < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Multiplizieren und Fakultät: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 15:45 Sa 13.02.2010
Autor: matheja

Aufgabe
Hi Leute, sry wenn ich schon wieder störe.ich bin grad am lernen für eine wichtige Klausur.

1) Schreiben sie ein Programm das zwei Klassen mit einander multpilziert
2) Fakuläten berechnet
3)Lassen Sie sich nun die Ergebnisse der Funktion [mm] f(x)=x^2 [/mm] für ein
Zahlenintervall von 10 bis 50 innerhalb der main()-Methode ausgeben.
Deklarieren Sie hierzu zunächst zwei ganzzahlige Variablen innerhalb der
main()-Methode mit den Namen interval_start und interval_end
und weisen Sie ihnen die Werte 10 bzw. 50 zu.
Erweitern Sie die main()-Methode nun um eine for-Schleife, die vom
Beginn des Intervalls bis zum Ende des Intervalls läuft. Innerhalb dieser
Schleife rufen Sie Ihre square()-Methode mit dem Schleifenindex auf.
Geben Sie dass Ergebnis innerhalb der Schleife in folgender Form aus
[mm] 10^2=100 [/mm]
[mm] 20^2=400.... [/mm]

Ich arbeite mit Eclipse und erhalte folgenden Code:

package MathCalc;

//Klassenerstellung
public class MathCalc {
//Anlegen der main()-Methode

public static void main(String[] args)
{
//Deklarierung von interval_start
int interval_start = 10;
//Deklarierung von interval_end
int interval_end = 50;
//Deklarierung von interval_step
int interval_step = 10;
//Deklarierung von factorial
int factorial = 1000;
//Deklarierung von Variable n
int n = 1;
//Deklarierung von Variable k
int k = n + 1;


//Deklarierung der ersten Zahl
int ersteZahl = Integer.parseInt(args[0]);
//Ausgabe der Zeile in VM
System.out.println("Geben sie die erste Zahl ein: "+ersteZahl);
//Deklarierung der zweiten Zahl
int zweiteZahl = Integer.parseInt(args[0]);
//Ausgabe der Zeile in VM
System.out.println("Geben sie die zweite Zahl ein: "+zweiteZahl);

//Multiplikation und Ausgabe in Ergebnis
int Ergebnis = multiply(ersteZahl, zweiteZahl);
//Quadrierung und Ausgabe in Ergebnis2
int Ergebnis2 = square (Ergebnis);

//for-Schleife, die von 10 bis 50 quadriert
for (int i=interval_start; i<=interval_end;i = i + interval_step) {
square (i);
}
//while-schleife für Fakultätberechnung
while ( n<factorial) {
multiply(n, k);
n = n * k;
k++;
}
System.out.println("Maximum factorial below 1000: " + n + "=" + (k - 1)+"!");
}
//Anlegen der multiply()-Methode
public static int multiply (int a, int b) {
// Ausgabe der Zeile in VM
System.out.println("Das Ergebnis ist: " + a * b);
//Multiplikation und Übergabe in r
int r = a * b;
//Rückgabe von r
return r;
}
//Anlegen der square()-Methode
public static int square (int c) {
// Ausgabe der Zeile in VM
System.out.println(c + "^2 = " + c * c);
//Quadrierung und Übergabe in d
int d = c * c;
//Rückgabe von d
return d;
}
}

Ich erhalte immer die Fehlermeldung
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

Ich sitz schon seit stunden an diesem Programm.Langsam dreh ich echt durch.Wär schön wenn  ihr mir helfen könntet.


Danke

matheja




        
Bezug
Multiplizieren und Fakultät: Antwort
Status: (Antwort) fertig Status 
Datum: 15:57 Sa 13.02.2010
Autor: fencheltee

hallo, du musst das programm auch mit einem parameter aufrufen, sonst kann auch nichts ausgegeben werden! wo man das in eclipse einstlelt weiss ich jedoch nicht, ich nutze netbeans. notfalls halt über die eingabeaufforderung aufrufen

gruß tee

Bezug
                
Bezug
Multiplizieren und Fakultät: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:16 Sa 13.02.2010
Autor: matheja

Aufgabe
Grüß dich Fenchel,

joa ich bin kein großes java genie.eher das gegenteil.

> hallo, du musst das programm auch mit einem parameter
> aufrufen, sonst kann auch nichts ausgegeben werden! wo man
> das in eclipse einstlelt weiss ich jedoch nicht, ich nutze
> netbeans. notfalls halt über die eingabeaufforderung
> aufrufen
>  
> gruß tee

warum muss ich einen parameter überweisen?
ich weiß wo ich das bei eclipse glaube ich tun kann:
Run>RunConfigurations>Arguments

welchen parameter sollte ich überweisen.

Danke
matheja

Bezug
                        
Bezug
Multiplizieren und Fakultät: Antwort
Status: (Antwort) fertig Status 
Datum: 16:27 Sa 13.02.2010
Autor: fencheltee


> Grüß dich Fenchel,
>  
> joa ich bin kein großes java genie.eher das gegenteil.
>  
>
> warum muss ich einen parameter überweisen?
>  ich weiß wo ich das bei eclipse glaube ich tun kann:
>  Run>RunConfigurations>Arguments
>  
> welchen parameter sollte ich überweisen.
>  
> Danke
>  matheja

int ersteZahl = Integer.parseInt(args[0]);
//Ausgabe der Zeile in VM
System.out.println("Geben sie die erste Zahl ein: "+ersteZahl);
//Deklarierung der zweiten Zahl
int zweiteZahl = Integer.parseInt(args[0]);
mach dir klar, was du mit args[0] überhaupt abrufst, und wie man diese eingabe tätigt

gruß tee



Bezug
                                
Bezug
Multiplizieren und Fakultät: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 16:59 Sa 13.02.2010
Autor: matheja

zu args[0];

wenn ein Programm mit java aufgerufen wird, ließt args[0] den ersten Wert ein, der nach dem Namen des Programms folgt, args[1] danach den zweiten Wert, der nach dem ersten folgt usw.


zu Integer.parseInt:

Integer.parseInt bedeutet hierbei, dass die eingelesenen Zeichen bzw. Ziffern als ganze Zahlen interpretiert werden, mit denen im Verlauf des Programms gerechnet werden kann.

=> d.h wandelt Strings in z.b integer um

wird also ein String übertragen der in ein inter umgewandelt wird?
Mein problem liegt glaube ich zum größten teil darin wie ich dieses s..chöne programm endlich zum laufen bringen kann
wie gesagt, ich weiß wo ich da argumente übergeben kann, habe auch schon einfach einige werte eigegeben :

Das Ergebnis ist: 24
Das Ergebnis ist: 120
Das Ergebnis ist: 720
Das Ergebnis ist: 5040
Maximum factorial below 1000: 5040=7!

hmm....also irgendwas stimmt da nicht?
wenn ich iwelche zahlen übergebe bekomm ich obiges ergebnis

man irgendjemand muss mir da raus helfen ich seh mal wieder vor lauter bäumen den urwald nicht


Bezug
                                        
Bezug
Multiplizieren und Fakultät: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:04 Sa 13.02.2010
Autor: fencheltee


> zu args[0];
>  
> wenn ein Programm mit java aufgerufen wird, ließt args[0]
> den ersten Wert ein, der nach dem Namen des Programms
> folgt, args[1] danach den zweiten Wert, der nach dem ersten
> folgt usw.

[ok]

>  
>
> zu Integer.parseInt:
>  
> Integer.parseInt bedeutet hierbei, dass die eingelesenen
> Zeichen bzw. Ziffern als ganze Zahlen interpretiert werden,
> mit denen im Verlauf des Programms gerechnet werden kann.
>  
> => d.h wandelt Strings in z.b integer um
>  

[ok]

> wird also ein String übertragen der in ein inter
> umgewandelt wird?
>  Mein problem liegt glaube ich zum größten teil darin wie
> ich dieses s..chöne programm endlich zum laufen bringen
> kann
>  wie gesagt, ich weiß wo ich da argumente übergeben kann,
> habe auch schon einfach einige werte eigegeben :
>  
> Das Ergebnis ist: 24
>  Das Ergebnis ist: 120
>  Das Ergebnis ist: 720
>  Das Ergebnis ist: 5040
>  Maximum factorial below 1000: 5040=7!
>  
> hmm....also irgendwas stimmt da nicht?
>  wenn ich iwelche zahlen übergebe bekomm ich obiges
> ergebnis
>  
> man irgendjemand muss mir da raus helfen ich seh mal wieder
> vor lauter bäumen den urwald nicht
>  

dein problem eben bestand doch darin, dass du einen fehler erhalten hast. was aufgrund eines fehlenden parameters passierte. nun übergibst du ja scheinbar dann ja werte.. das jetzige problem (was aber nicht definiert wurde) scheint dann eins der logischen art zu sein
also wo drückt der schuh denn jetzt noch? abgesehen davon dass du 2 mal den gleichen wert parst

gruß tee

Bezug
                                                
Bezug
Multiplizieren und Fakultät: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:26 Sa 13.02.2010
Autor: matheja

Aufgabe
Danke für die Antwort Fenchel.

> dein problem eben bestand doch darin, dass du einen fehler
> erhalten hast. was aufgrund eines fehlenden parameters
> passierte. nun übergibst du ja scheinbar dann ja werte..
> das jetzige problem (was aber nicht definiert wurde)
> scheint dann eins der logischen art zu sein
>  also wo drückt der schuh denn jetzt noch? abgesehen davon
> dass du 2 mal den gleichen wert parst
>  
> gruß tee

Ja gute Frage :D.Ich glaub ich bin einfach nur verwirrt.der gesammtzusammenhang fehlt mir.es sind viele bruchstücke da, dich ich langsam zusammenfügen muss.

Ich muss das jetzt alles noch mal reinziehen.
was mich verwirrt hat war das mit den parameter die ich noch irgenwo übergeben soll.bisher war es so das  diese noch automatisch übergeben wurden.Ich glaub eclipse ist schuld XD.

Es wär echt großartig wenn du nochmal oder jemand anders-hab dich denk ich genug geägert ;)- kurz resümieren kann,
welche parameter, wann wo wie warum übertragen werden und welche werte ich dann bei mir als übergabe parameter eintagenm soll

grüße und danke für eure geduld leutz
matheja



Bezug
                                                        
Bezug
Multiplizieren und Fakultät: Antwort
Status: (Antwort) fertig Status 
Datum: 18:19 Sa 13.02.2010
Autor: fencheltee


> Danke für die Antwort Fenchel.
>  
>
> Ja gute Frage :D.Ich glaub ich bin einfach nur verwirrt.der
> gesammtzusammenhang fehlt mir.es sind viele bruchstücke
> da, dich ich langsam zusammenfügen muss.
>  
> Ich muss das jetzt alles noch mal reinziehen.
>  was mich verwirrt hat war das mit den parameter die ich
> noch irgenwo übergeben soll.bisher war es so das  diese
> noch automatisch übergeben wurden.Ich glaub eclipse ist
> schuld XD.
>  
> Es wär echt großartig wenn du nochmal oder jemand
> anders-hab dich denk ich genug geägert ;)- kurz
> resümieren kann,
>  welche parameter, wann wo wie warum übertragen werden und
> welche werte ich dann bei mir als übergabe parameter
> eintagenm soll
>  
> grüße und danke für eure geduld leutz
>  matheja
>  
>  

also du willst ja "flexibel" 2 zahlen vermultiplizieren lassen.
dazu musst du also die zahlen direkt während der programmausführung einlesen (was in java aber schon komplizierter ist, als etwa in c)
siehe
http://openbook.galileocomputing.de/javainsel8/javainsel_14_004.htm#mj1d0203580263334d55e78601998800e5
wie gesagt, dass wäre der kompliziertere weg, und das scheint ihr noch nicht behandelt zu haben?!

dr wesentlich einfachere weg ist es, die parameter direkt vor der ausführung mit ans programm zu übergeben
bsp:
1: public static void main(String[] args)
2: {
3:     int zahl1= Integer.parseInt(args[0]);
4:     int zahl2= Integer.parseInt(args[1]);
5: System.out.printf("%d * %d= %d",zahl1,zahl2,zahl1*zahl2);
6: }
7:     
8: }


Bezug
        
Bezug
Multiplizieren und Fakultät: Antwort
Status: (Antwort) fertig Status 
Datum: 11:06 So 14.02.2010
Autor: Event_Horizon

Hallo!

Ich sehe da noch ein paar weitere Probleme:


Generell zu multiply und square: Du solltest vermeiden, die Ausgabe direkt darin zu machen. Denn die beiden Funktionen sollten nur das Ergebnis berechnen. Was mit so einem Endergebnis geschehen soll, also auf den Bildschirm ausgeben, in eine Datei schreiben, oder für weitere Berechneungen verwenden, sollte die aufrufende Funktion main bestimmen. Also direkt in der main so:

for (int i=interval_start; i<=interval_end;i = i + interval_step) {
  System.out.println(i + "^2="+square (i));    
}

(Wobei ich mich frage, ob Java es erlaubt, Zahlen und Strings so wie hier einfach zu addieren, ich kann es mir kaum vorstellen.)

Außerdem läßt du das Produkt bzw das Quadrat zwei mal berechnen, einmal in der Ausgabe, dann als Rückgabewert. Funktioniert, ist aber nicht schön.

Nebenbei, was hälst du von dieser Spielerei?

public static int square (int c) {
  int d = multiply(c, c);
  //Rückgabe von d
  return d;
}





In der Fakultätsschleife steht ein multiply - wozu?

Dann läuft die Schleife so lange, bis n deine Grenze von 1000 überschreitet. Das heißt, die Schleife wird zwar verlassen, das n ist aber schon größer als 1000. Also anschließend nochmal durch k teilen, und k um eins kleiner machen.

mit dem k++, (k-1) und so. Was hälst du davon:

int n=1;
int k=n;

while(n<1000){
  k++
  n=multiply(n,k);
}

Nach verlassen dieser Schleife gilt n=k!, bei dir gilt n=(k-1)!.




Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]