Java 为什么我的代码运行for循环超过5次?
我问这个听起来很傻,但我的for循环有问题 这是我遇到问题的部分代码Java 为什么我的代码运行for循环超过5次?,java,for-loop,Java,For Loop,我问这个听起来很傻,但我的for循环有问题 这是我遇到问题的部分代码 Scanner input = new Scanner( System.in); int number; for(int i = 0;i < 5;i++) { System.out.print("Enter 5 integers:"); number = input.nextInt(); } 基本上,我要做的是读取5个整数,然后将它们显示在一个条形图上。你把状态变化和图形混淆了paintComponent,在本
Scanner input = new Scanner( System.in);
int number;
for(int i = 0;i < 5;i++) {
System.out.print("Enter 5 integers:");
number = input.nextInt();
}
基本上,我要做的是读取5个整数,然后将它们显示在一个条形图上。你把状态变化和图形混淆了
paintComponent
的时间或频率,则可能会出现问题。相反,您应该只让paintComponent
询问某些对象的当前状态并相应地进行绘制
根据您的具体情况,应通过以下方式之一提供5个数字
- 传递给条形图的构造函数
- 从BarGraph构造器中的用户处请求(不是我最喜欢的,但会起作用)
- 传递给条形图的方法
- 在传递给条形图的其他对象中
paintComponent
内的用户处请求它们,这意味着每次需要重画时(例如,移动、重新调整大小、更改焦点、被其他帧隐藏等),都会从用户处重新请求数字
您也可能希望使用
super.paintComponent(g)
启动paintComponent
方法,但罪魁祸首是input.nextInt()代码>。使用input.nextLine()代码>改为。比5多多少次?它应该只运行5次(如果不键入整数值作为输入,则运行次数应少于5次)。你确定你发布的代码吗?如果我运行你的代码,循环将执行5次。paintComponent由swing调用,在这种情况下,它似乎需要2次重新绘制。我个人不会因为这种原因而把图形和逻辑混为一谈
public class BarGraph extends JPanel
{
public void paintComponent( Graphics g )
{
Scanner input = new Scanner( System.in);
// super.paintComponent(g);
int number;
for(int i = 0;i < 5;i++)
{
System.out.print("Enter 5 integers:");
number = input.nextInt();
// g.drawRect(10 * i, 10 * i, 100 * number, 10);
}
}
}
public class BarGraphTest
{
public static void main( String[] args)
{
BarGraph panel = new BarGraph();
JFrame application = new JFrame();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
application.add( panel );
application.setSize( 300, 300);
application.setVisible( true );
}
}