Java wird nicht ausgeführt, weil es eine break-Anweisung außerhalb einer Schleife, aber ich habe es in einer Schleife
Ich habe zwei komische Fehler
Neuen Fehler, wenn ich erzähle, java zeichnen Sie eine Zeichenfolge, zeigt den coordinateness von x und y, gibt Es nicht.
public void paint (Graphics g)
{
super.paint (g);
//System.out.println ("Boolean: " + this.closeDoors);
g.drawString("("+x+","+y+")",x,y);
}
Link zu meinem Programm, wenn Sie um es zu kompilieren.
http://hotfile.com/dl/107032853/c81d927/Pigment.java.html
Dies ist mein komplettes Programm
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.awt.Graphics;
/**
*
* @author George Beazer
*/
public class Pigment extends JApplet
{
boolean closeDoors;
private int x = 0;
private int y = 0;
public static void main(String [] args)
{
Pigment stuff = new Pigment();
}
public Pigment()
{
setBackground (Color.blue);
}
@Override
public void init()
{
setLayout(new FlowLayout());
addMouseListener(new MyMouseListener());
}
@Override
public void paint (Graphics g)
{
super.paint (g);
//System.out.println ("Boolean: " + this.closeDoors);
g.drawString("("+x+","+y+")",x,y);
if (x > 35)
{
g.drawLine (35, 50, 570, 50);
g.drawLine (35, 50, 250, 0);
g.drawLine (250, 0, 570, 50);
g.drawRect (50, 50, 500, 350);
g.fillRect (100, 75, 80, 80);
g.fillRect (400, 75, 80, 80);
g.fillRect (240, 200, 125, 200);
}
else
{
g.drawLine (35, 50, 570, 50);
g.drawLine (35, 50, 250, 0);
g.drawLine (250, 0, 570, 50);
g.drawLine (180, 120, 100, 120);
g.drawLine (400, 120, 480, 120);
g.drawLine (140, 75, 140, 160);
g.drawLine (450, 75, 450, 160);
g.drawRect (50, 50, 500, 350);
g.drawRect (100, 75, 80, 80);
g.drawRect (400, 75, 80, 80);
g.drawRect (240, 200, 125, 200);
g.drawOval (330,280, 20, 20);
}
}
private class MyMouseListener implements MouseListener
{
public void mouseClicked (MouseEvent e)
{
x = e.getX();
y = e.getY();
}
public void mouseEntered (MouseEvent e)
{
}
public void mouseExited(MouseEvent e){}
public void mousePressed (MouseEvent e){
}
public void mouseReleased (MouseEvent e){}
}
}
- Ich könnte etwas fehlen, aber ich kann nicht sehen, eine einzelne Schleife in deinem code-Beispiel.
- Wo ist Sie-Schleife? Sie haben nur eine Pause in einer IF-Anweisung.
- Sie sollten akzeptieren, korrekte Antworten auf deine vorherigen Fragen.
- Sie wirklich brauchen, um zu gehen, und klicken Sie auf das Häkchen auf die Antwort "Akzeptiert" auf Ihre vorherigen Fragen, Menschen gehen zu stoppen beantworten, wenn man nicht nach.
- Auch hotfile.com ist ein SCHRECKLICH statt zu erwarten, dass die Menschen download-code aus. Es ist ein pay-site, und abscheulich zu behandeln, wenn Sie nicht über ein Abonnement. Betrachten Sie so etwas wie das Wesentliche Merkmal der github.com in der Zukunft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit Bezug auf Ihre erste Frage, der Grund, dass Sie immer eine compiler-Fehlermeldung hier:
Ist, dass diese
break
Aussage ist eigentlich nicht in einer Schleife. In Java können Sie brechen auswhile
,for
,do...while
, undswitch
Aussagen, aber nichtif
Aussagen. Es gibt nicht einen besonders guten Grund dafür - es ist vor allem historischen - aber der compiler ist in der Tat durchsetzen.Der drei oben genannten Kontrollstrukturen
for
,while
, unddo...while
sind die so genannten loops, weil Sie code ausführen, der potenziell viele Male. Diebreak
- Anweisung in diesem Fall ist eine Art zu sagen: "bitte Abbrechen die Ausführung der aktuellen Schleife; ich will nicht laufen, es nicht mehr." Das Gegenteil istcontinue
, was bedeutet, "gehen Sie bitte auf die nächste iteration dieser Schleife."Den Grund können Sie eine Pause aus einem
switch
ist, denn Java istswitch
Aussage basiert auf der Programmiersprache C, die version derswitch
in die Etiketten sind "fall-through." In diesem Zusammenhangbreak
bedeutet "ich habe fertig ausgeführt alle der code, den ich ausführen möchten in diesem besonderen label; bitte hilf mir aus dieser Aussage." Interessanterweise können Siebreak
aus einemswitch
, aber Sie können nichtcontinue
.Können Sie jedoch nicht
break
aus einemif
- Anweisung. Es ist keine high-level-Gründe für diese, und in der Tat die Sprache, die Designer hätten genauso gut auch erlaubt, dieses Verhalten zu bedeuten "stop ausführen dieser Teil derif
Anweisung." Ich denke, der Grund, warum Sie sich dafür entschieden dies nicht zu tun, ist, dassif
Aussagen einen Art "implizitenbreak
" am Ende der einzelnen handler. Zum Beispiel, wenn Sie schreiben,Dann nach der Ausführung
A
die Ablaufsteuerung sofort springen Sie aufC
, anstatt durch zu fallen, um dieelse
hf.Wenn Sie wollen, um zu simulieren eine
break
aus der Mitte einerif
- Anweisung, die Sie tun könnten, so etwas wie dieses:Die Idee hier ist, dass Sie laufen
if
Anweisung für einige Zeit, und dann entscheiden, mit einem zweitenif
Erklärung, ob oder nicht, um den rest des Codes in der Schleife.Hoffe, das hilft!
repaint
innerhalbpaint
, was bedeutet, dass jedes mal das Fenster wird gemalt, es wird wieder gemalt. Das entfernen dieser Zeile sollte das problem beheben.repaint
aus, dass ein Teil des Codes. Die tatsächliche Umsetzung derpaint
wird zeigen, bis auf dem Bedienfeld, sobald die Methode zurückkehrt, und so brauchen Sie nicht, um anzugeben, auf Java, dass es aktualisiert werden muss, sobald mehr.repaint
:If this component is a lightweight component, this method causes a call to this component's paint method as soon as possible.
. Also, wenn inpaint
rufen Sierepaint
dass in Kurven fordertpaint
und so weiter und so weiter...if (x > 35) {...}
ist nicht eine Schleife ist eine Anweisung.for (int x = 0; x <= 35; x++) {...}
ist eine Schleife.while( x <= 35 ) {...}
ist eine Schleife.do {...} while ( x <= 35 )
ist eine Schleife.Nehmen die
repaint()
rufen, es ist überflüssig.Die Sie wirklich brauchen, zu gehen und klicken Sie auf das Häkchen auf die Antwort "Akzeptiert" auf Ihre vorherigen Fragen, Menschen gehen zu stoppen beantworten, wenn Sie sich nicht.
repaint
innerhalbpaint
... könnte das das Problem sein?Nein, Sie haben es innerhalb einer
if
- Anweisung, die nicht eine Schleife. Selbst wenn es funktioniert, istbreak
nutzlos wäre es, die Anweisung wird nur einmal ausgeführt.Einer if-else-block ist keine Schleife, das ist dein Problem hier. Ihre zweite Fehler könnte sein, weil x und y nicht erklärt, zumindest nicht in dem code, den Sie uns zeigte.
auf Ihre Linie 59, es ist Pause - Anweisung in der WENN block. das macht keinen Sinn. Entfernen Sie es und Ihr Programm ist gut zu gehen.
Dank alee für Ihren Vorschlag.
Bewege ich repaint(); Methode aus der paint-Klasse MyMouseListener Klasse. Dass die Arbeit perfekt und Java wurde gezeichnet, ein Bild ständig,
Kapitel 14 Java-Programmierung-Herausforderung Nummer 2.
Schreiben Sie ein applet, das zeichnet das Haus auf der linken Seite sehen Sie in Abbildung 14-32. Wenn der Benutzer auf
auf die Tür oder das Fenster, Sie schließen sollten. Die Abbildung rechts zeigt das Haus mit seinem
Tür und Fenster geschlossen.
Kann man diesen thread schliessen.