Java 程序中输入错误的原因

Java 程序中输入错误的原因,java,swing,Java,Swing,这是我的节目: 子类: import javax.swing.JOptionPane; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; import java.util.Scanner; public class abc extends JPanel { public void paintComponent(Graphics g) { Scanner input =

这是我的节目:

子类:

import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
import java.util.Scanner;

public class abc extends JPanel {

    public void paintComponent(Graphics g) {
        Scanner input = new Scanner(System.in);
        super.paintComponent(g);

        this.setBackground(Color.WHITE);
        int a, b;
        System.out.print("input a: ");
        a = input.nextInt();
        a = b;
        g.setColor(Color.BLUE);
        g.fillOval(150, 40, a, b);
    }
}
主要类别:

import java.awt.Color;
import javax.swing.JFrame;

public class abcd {

    public static void main(String args[]) {
        JFrame frame = new JFrame("Draw");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        abc panel = new abc();
        panel.setBackground(Color.WHITE);
        frame.add(panel);
        frame.setSize(400, 200);
        frame.setVisible(true);
    }
}
输出总是重复;我必须输入3-4次。 我把它分为子类和主类。
请帮助解决此问题,并解释它重复出现的原因?

我注意到您的代码中很少有可能导致此问题的地方:

public class abc extends JPanel{
public void paintComponent(Graphics g){
Scanner input=new Scanner(System.in);
super.paintComponent(g);

this.setBackground(Color.WHITE);
int a,b;
System.out.print("input a: ");
a=input.nextInt();
a=b<代码>这不应该是b=a吗,也许是你做错了?

g.setColor(Color.BLUE);
g.fillOval(150,40,a,b);

}

其次,为什么要在面板上画两次,第一次是在
abc
类中,第二次是在
abc
类中?

我注意到您的代码中有一些可能导致问题的地方:

public class abc extends JPanel{
public void paintComponent(Graphics g){
Scanner input=new Scanner(System.in);
super.paintComponent(g);

this.setBackground(Color.WHITE);
int a,b;
System.out.print("input a: ");
a=input.nextInt();
a=b<代码>这不应该是b=a吗,也许是你做错了?

g.setColor(Color.BLUE);
g.fillOval(150,40,a,b);

}

其次,为什么要在面板上绘制两次,第一次是在
abc
类中,第二次是在
abc
类中?

为什么要将GUI与CLI混合使用?程序的输入应该来自图形输入控件,如
JTextField
。它重复的原因可能与您不控制重绘过程有关。由于各种原因,重绘可能随时发生……我建议您花点时间进行通读1)对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。2) 不要设置顶级容器的大小。而是布局内容&调用
pack()
。3) 请在句子开头加一个大写字母。也可以用大写字母表示I,缩写和首字母缩略词如JEE或WAR。这使人们更容易理解和帮助。循环应该有助于您为什么要将GUI与CLI混合使用?程序的输入应该来自图形输入控件,如
JTextField
。它重复的原因可能与您不控制重绘过程有关。由于各种原因,重绘可能随时发生……我建议您花点时间进行通读1)对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。2) 不要设置顶级容器的大小。而是布局内容&调用
pack()
。3) 请在句子开头加一个大写字母。也可以用大写字母表示I,缩写和首字母缩略词如JEE或WAR。这使人们更容易理解和帮助。切勿在paintComponent内使用扫描仪,切勿在paintComponent内创建任何内容切勿在paintComponent内使用扫描仪,切勿在paintComponent内创建任何内容