Finde BUG nicht...

BPcM

Mitglied
Hallo, ich bin ein blutiger Anfänger und habe einen Code geschrieben, der sämtliche Teiler einer Zahl (und den Quotient der Division) auflisten soll. Nun habe ich jedoch das Problem, dass beim ausführen ein CPU-Kern voll ausgelastet wird und sonst nichts passiert. Ich vermute, dass ich irgendwo eine Endlosschleife eingebaut habe, aber ich finde sie nicht.
Andere Verbesserungsvorschläge sind herzlich willkommen :)
Danke im voraus!

P. S. : Ich benutze Eclipse als IDE und das in Mac OS X integrierte JDK 1.6

Java:
import java.util.*;
public class Main {

	public static void main(String[] args) {
		try {
			System.out.println("Bitte Zahl eingeben:");
			Scanner input = new Scanner(System.in);
			long divident = input.nextLong();
			long divisor[][]; //erstelle Array zum speichern
			divisor = new long[(int) divident][1];
			long i;
			i = 1;
			int c;
			c = -1;
			while (i <= divident) {
				long temp;
				long counter;
				counter = 0;
				do {
					temp = divident;
					temp = temp - i;
					counter ++; //Subtrahiere i solange bis es nicht mehr geht. Wenn temp 0 ist, ist die Zahl ein Divident. counter ist der Quotient.				
					
				} while (i >= temp);
				if (temp == 0) {
					c ++;
					divisor[(int) (c)][0] = i;
					divisor[(int) (c)][1] = counter; //c ist die Anzahl der Dividenten
					
				}
				i ++;
			}
			System.out.println("");
			for (long out = 0; out == c; out ++) {
				
				System.out.println(divident + " / " + divisor[(int) out][0] + " = " + divisor[(int) out][1]); //Gebe jeden Dividenten nacheinander aus
			}
					
		} catch (Exception e) {
			System.out.println("ERROR, system halted...");
		}

	}

}
 

fjord

Bekanntes Mitglied
Ich vermute auf die schnelle, dass er hier dran liegt:
Java:
do {
  temp = divident;
  temp = temp - i;
  counter ++; //Subtrahiere i solange bis es nicht mehr geht. Wenn temp 0 ist, ist die Zahl ein Divident. counter ist der Quotient.              
} while (i >= temp);
du änderst in der Schleife i nicht und temp wird jedesmal zu Beginn auf divident gesetzt. Wenn die Schleife also nach dem ersten Durchlauf nicht abbricht, wird sie nie abbrechen.
 

andiv

Bekanntes Mitglied
Die for-Schleife solltest du dir auch nochmal anschauen
Java:
for (long out = 0; out == c; out ++) {
ein ==-Vergleich als Schleifenbedingung ist selten richtig.
 

Toffel2

Mitglied
Hast du schon Erfahrungen mit dem Debugger gesammelt?Solche Probleme sind nämlich
prädestiniert dafür. ;)

Einfach mal in Zeile 24 einen Breakpoint setzen und ein paar mal durchlaufen lassen.
 

BPcM

Mitglied
@ andiv Warum nicht und was sollte ich sonst nehmen (eclipse meldet min "=" "Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from long to boolean"

P. S. : Bin vorübergehend nicht zu erreichen (Abendessen...)
 

JAVAnnik

Bekanntes Mitglied
Auch ne Möglichkeit...

Java:
import java.io.*;

public class Teiler
{
  public static void main (String[] args) throws IOException
  {
     InputStreamReader Input = new InputStreamReader(System.in);
     BufferedReader DataIn = new BufferedReader(Input);

     System.out.print("Gebe eine ganze Zahl ein: ");
     int divident = Integer.parseInt(DataIn.readLine());

     for (int i=divident; i>0; i--)
     {
       if (divident%i == 0)
       {
         System.out.println(divident+" / "+i+" = "+divident/i);
       }
     }
  }
}
 

BPcM

Mitglied
@ JAVAnnik Das funktioniert auch sehr gut, aber ich möchte mit einem Array arbeiten (die Daten sollen in einem späteren Schritt auch noch abrufbar sein).
@ fjord Das stimmt, ich habe temp jedes mal zurück gesetzt, aber auch wenn ich temp vor der do-Schleife intialisiere, komme ich nicht weiter...
@ toffel vielleicht bin ich zu blöd, aber der "Debug Current Instruction Pointer" zeigt mir jedes mal auf Zeile 36, aber die Ausgabe ist doch korrekt, in dem Array müssten Daten liegen...

HILFE !!!
 

lipox

Mitglied
Hi,

also zunächst speicherst du später, jeweils 2 Werte, also muss bei der Initialisierung des Arrays die zweite Dimension 2 sein und nicht 1:
Java:
divisor = new long[(int) divident][2];

Dann schreibst du in deinem Kommentar:
//Subtrahiere i solange bis es nicht mehr geht. Wenn temp 0 ist, ist die Zahl ein Divident. counter ist der Quotient.
Deine innere Schleife macht das aber nicht. temp und i haben dort immer den gleichen Wert -> Endlosschleife.
Es müsste wohl eher so aussehen:
Java:
                long temp = divident;
                long counter = 0;

                do {
                    temp = temp - i;
                    counter ++; //Subtrahiere i solange bis es nicht mehr geht. Wenn temp 0 ist, ist die Zahl ein Divident. counter ist der Quotient.               
                    
                } while (temp > 0);

Die Ausgabe sieht auch nicht richtig aus, probiere es mit:
Java:
            for (long out = 0; out < c; out ++) ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
Z Montageberechnungs programm, finde leider den Fehler nicht Java Basics - Anfänger-Themen 13
S Finde den fehler nicht Java Basics - Anfänger-Themen 1
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
M Methoden Fehler und finde die Lösung nicht wirklich Java Basics - Anfänger-Themen 6
T Input/Output Leerzeilen in Ausgabe -> finde den Fehler nicht Java Basics - Anfänger-Themen 10
Z Finde den Fehler nicht ! Java Basics - Anfänger-Themen 3
X Finde die Files über FTP nicht Java Basics - Anfänger-Themen 4
S Compiler-Fehler Finde den Fehler nicht... Java Basics - Anfänger-Themen 4
S Compiler-Fehler error: ';' expected (finde Fehler nicht) Java Basics - Anfänger-Themen 10
D Code Fehlerhaft finde den Fehler nicht. Java Basics - Anfänger-Themen 1
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
R Finde den Fehler nicht Java Basics - Anfänger-Themen 4
A finde fehler nicht Java Basics - Anfänger-Themen 9
X StackOverflowError, finde den Fehler nicht Java Basics - Anfänger-Themen 5
M Methoden Fehler in Methode - Finde ihn nicht Java Basics - Anfänger-Themen 7
P Benötige Hilfe - finde Fehler nicht. Java Basics - Anfänger-Themen 3
J "ArrayIndexOutOfBoundsException", finde den Fehler schlicht nicht Java Basics - Anfänger-Themen 6
V finde meinen Fehler nicht Java Basics - Anfänger-Themen 10
L StackOverFlow, finde Grund nicht! Java Basics - Anfänger-Themen 5
M Ganz einfaches Beispiel, finde den Fehler aber nicht :( Java Basics - Anfänger-Themen 2
Z Problem mit Tutorial - Finde Kon.java nicht Java Basics - Anfänger-Themen 11
J Finde Fehler bei kleinem Programm nicht Java Basics - Anfänger-Themen 3
V Ganz kurze Java-Hilfe - Ich finde meinen Fehler nicht Java Basics - Anfänger-Themen 4
S Out of bounds exception. Finde den fehler nicht Java Basics - Anfänger-Themen 13
U finde fehler nicht! bitte um hilfe Java Basics - Anfänger-Themen 8
C ich finde den fehler nicht Java Basics - Anfänger-Themen 4
J Finde die Fehler nicht Java Basics - Anfänger-Themen 2
M Finde Fehler nicht: NotSerializableException Java Basics - Anfänger-Themen 2
F Finde den Fehler nicht Java Basics - Anfänger-Themen 4
J class, interface, or enum expected - finde Fehler nicht. Java Basics - Anfänger-Themen 4
U Finde den fehler nicht Java Basics - Anfänger-Themen 9
J Kann den fehler nicht finde!!! Java Basics - Anfänger-Themen 7
S Finde den Fehler nicht/ verstehe Anweisung nicht Java Basics - Anfänger-Themen 12
S Finde den Fehler nicht ! Java Basics - Anfänger-Themen 8
K class Enum Methode: values() - finde ich nicht in der API Java Basics - Anfänger-Themen 2
W Java Anfänger... Finde fehler nicht Java Basics - Anfänger-Themen 11
B Java programm mit Arrays. finde den Fehler nicht Java Basics - Anfänger-Themen 3
U Finde den fehler nicht Java Basics - Anfänger-Themen 10
U Finde den fehler nicht Java Basics - Anfänger-Themen 6
C Finde meinen Fehler nicht Java Basics - Anfänger-Themen 6
A Finde javax.servlet.* nicht Java Basics - Anfänger-Themen 6
F Finde fehler nicht Java Basics - Anfänger-Themen 5
N finde die fehler nicht Java Basics - Anfänger-Themen 9
G Bild wird nicht neu gezeichnet - finde den Fehler nicht Java Basics - Anfänger-Themen 3
S Finde den Fehler nicht Java Basics - Anfänger-Themen 13
T ArrayIndexOutOfBoundsException finde den Auslöser nicht Java Basics - Anfänger-Themen 5
O problem mit document listener finde den fehler nicht Java Basics - Anfänger-Themen 2
O arrayindexoutofbounds finde den fehler nicht Java Basics - Anfänger-Themen 6
B Finde das Problem nicht! Java Basics - Anfänger-Themen 2
R Finde meinen Fehler nicht! - Namen von Personen vergleichen Java Basics - Anfänger-Themen 6
M Finde den Fehler nicht Java Basics - Anfänger-Themen 3
B Finde Methode einer Klasse nicht Java Basics - Anfänger-Themen 4
N Finde Fehler nicht! Help plz! Java Basics - Anfänger-Themen 3
F Kleiner Fehler, den ich aber leider nicht finde. Java Basics - Anfänger-Themen 4
berserkerdq2 Wo finde ich in der Java Api die Notation zu Threads bezüglich Synchronized? Java Basics - Anfänger-Themen 14
T Wie finde ich passende Java Klassen & Methoden? Java Basics - Anfänger-Themen 4
L Methoden Finde Secquenz ineinem array Java Basics - Anfänger-Themen 12
O Verriegeln, aber wo? Finde den Client der zu schließem ist. Java Basics - Anfänger-Themen 0
D Wo finde ich die OpenSource-Sources? Java Basics - Anfänger-Themen 5
B Wie finde ich Exceptions? Java Basics - Anfänger-Themen 19
L Illegal Start of Type, wie finde ich den fehler Java Basics - Anfänger-Themen 4
E Finde Error nciht Java Basics - Anfänger-Themen 3
B Calculator Fehlermeldung ich finde aber nichts? Java Basics - Anfänger-Themen 2
G wie finde ich workspace programmatisch? Java Basics - Anfänger-Themen 13
G Wie finde ich das Verzeichnis von meinen Java Projekt? Java Basics - Anfänger-Themen 7
H Finde Position Java Basics - Anfänger-Themen 4
J wo finde ich javah Java Basics - Anfänger-Themen 16
B wo finde ich diese Dateien? Java Basics - Anfänger-Themen 6
B Wo finde ich die Klasse javax.sound.sampled.AudioSystem Java Basics - Anfänger-Themen 7
G wie finde ich den pfad meines programms raus? Java Basics - Anfänger-Themen 2
F Erste Schritte in Java - Wo finde ich Antworten? Referenzbib Java Basics - Anfänger-Themen 3
B Wo finde ich eine Übersicht aller Methoden? Java Basics - Anfänger-Themen 2
J wo finde ich die methode addactionlistener in der api ? Java Basics - Anfänger-Themen 5
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben