PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage wegen Quellcode in Java


desperado2000
2004-11-23, 22:14:50
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Ws04Aufg2
{
public static void main(String[] args) throws IOException {

long zahl1;
long zahl2;
String eingabeZeile;
BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
do
{
System.out.println("Geben Sie in der nächsten Zeile die untere und die obere Grenze ein!");
eingabeZeile = eingabe.readLine();
StringTokenizer tokens = new StringTokenizer(eingabeZeile);
zahl1 = Long.parseLong(tokens.nextToken());
zahl2 = Long.parseLong(tokens.nextToken());
} while (zahl1<2 || zahl2<2 || zahl2<zahl1);
for (long zahl = zahl1; zahl <= zahl2; zahl++)
{
// System.out.println("Zahl: "+zahl);
long summe=1;
for (long teiler=2; teiler*teiler <= zahl ;teiler++)
{
// System.out.println(" Teiler: "+teiler);
if (zahl%teiler==0)
{
summe+=teiler;
long koteiler=zahl/teiler;
// System.out.println(" KoTeiler: "+koteiler);
if (koteiler!=teiler) { summe+=koteiler; }
// System.out.println(" Summe: "+summe);
}
else;
}
if (summe==zahl)
{
System.out.println("Perfekte Zahl: "+summe);
}
else;

}
}
}



so jetzt meine Frage:
wie erklärt man jemanden der keine Ahnung hat von Java auf gut Deutsch folgende Zeilen

long summe=1;
for (long teiler=2; teiler*teiler <= zahl ;teiler++)

So vielleicht?
Der Anfangsteiler ist 2 und wird immer um 1 erhöht solange der Teiler mit sich selbst multipliziert
kleiner = 0 ist.
Was bedeutet dann oben die Summe=1?

BubbleBoy
2004-11-23, 22:19:23
.

desperado2000
2004-11-23, 23:12:55
Äh, du definierst die Variable 'summe' als long(int) und initialisierst sie mit '1', oder was wolltest du jetzt wissen?


P.S.: Für das Posten von Quelltexten gibt es das Tag , der macht das Lesen wesentlich angenehmer ;)


Warum ist die Summe denn 1?
Ich frage weil ich den Quellcode mit eigenen Worten erklären muss.

Pinoccio
2004-11-23, 23:30:52
Warum ist die Summe denn 1?
Ich frage weil ich den Quellcode mit eigenen Worten erklären muss.
long summe=1;
genau das macht! ;-) Soll heißen long ist ein Datentyp (ein langes int), summe der (von dir festgelegte) Variablenname und = ist ein Zuweisungsoperator und 1 ist 1.
Das andere ist ein Schleife.
for (Zählvariable; Laufbedingung, Inkrement der Zählvariable) {Anweisungsblock}
, eigentlich ist nur die Bedingung wichtig, man kann aber auch alles weglassen (-> Endlosschleife), häufige Form ist
for (int i=0, i<10, i++), geht aber zB auch mit Enumerations etc.
Hast du immer noch kein JAVA-Buch (http://www.forum-3dcenter.org/vbulletin/showthread.php?p=2453784#post2453784)? ;-)


mfg Sebastian

desperado2000
2004-11-23, 23:35:10
was bedeutet denn summe+=teiler
Ist ja die Kurzform für summe=teiler+summe
Aber naja das kann ja nicht sein
Wenn ich jetzt die Zahl 15 teste sind die Teiler ja 1 3 5 (und die Zahl 15 ja selbst aber die darf man ja nicht dazurechnen wenn man die Perfekten Zahlen ausrechnen will)
Also die Summe der Teiler von Zahl 15 ist 9(1+3+5)

Nochmal
Was bedeutet dann summe+=teiler?

BubbleBoy
2004-11-23, 23:42:16
.

desperado2000
2004-11-24, 00:08:08
das weiss ich auch aber das hilft mir leider nicht weiter ich muss doch den Quellcode erklären aber wenn ich sage das Summe der Teiler von Zahl 15 9 ist,dann kann ja nicht summe(9) = 9 + teiler sein(zb 3)

BubbleBoy
2004-11-24, 00:19:45
.

Pinoccio
2004-11-24, 00:21:14
Dir ist opffenbar nicht ganz klar, was dort passiert: "summe" und "teiler" sind Variablennamen, die nichts mit den Eigenschaften andrer Dinge zu tun haben, die genauso heißen! Um das code zu vereinfachen abstrahieren 8modene) Programmiersprachen. "summe" ist deine Bezeichung, der Computer weiß, daß sich dahintern ein (vermutlich, JAVA-Version abhängig) 32 Bit großer Speicherabschnitt verbirgt. "teiler" genauso.
summe+=teiler; (imho eine beschissene Notation, aber es geht halt)
bedeutet
summe=summe+teiler;
bdeutet:
addiere den Wert von "summe" und den Wert von "teiler" und weise diesen Wert dann "summe" zu.
(Feinheiten: es wird erst eine temp. Variable angelegt, der Compiler prüft auch noch die Verträglichkieten etc ...)
Wenn du wirklich Informatik studieren willst, solltest du das möglichst zügig in den Kopf bekommen.

mfg Sebastian

BubbleBoy
2004-11-24, 00:27:14
.

BubbleBoy
2004-11-24, 00:30:31
.

desperado2000
2004-11-24, 00:42:19
Danke euch allein.Das peinliche ist die Lösung steht vor mir bin aber auch mittlwerweile darauf gekommen.Es ist aber echt verdammt schwer für einen richtigen Anfänger Noob wie mich.