Java 当变量已经声明时,为什么我需要for循环的标识符?

Java 当变量已经声明时,为什么我需要for循环的标识符?,java,swing,for-loop,symbols,Java,Swing,For Loop,Symbols,有人能告诉我循环的有什么问题吗?我花了很多时间在互联网上反复试验和研究,但仍然找不到解决办法。它一直说预期的标识符找不到符号。请帮忙,谢谢 package imageviewer; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Scanner; import java.util.Vector; import java

有人能告诉我循环的
有什么问题吗?我花了很多时间在互联网上反复试验和研究,但仍然找不到解决办法。它一直说预期的标识符找不到符号。请帮忙,谢谢

package imageviewer;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import java.util.Vector;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class ImageViewer extends JPanel implements ActionListener {

    JPanel bottomPanel;
    JLabel imageLabel;
    JButton previousBtn;
    JButton nxtBtn;

    ImageViewer()
    {
        imageLabel = new JLabel("Image Display");
        imageLabel.setBackground(Color.WHITE);
        imageLabel.setOpaque(true);
        add(imageLabel);

        previousBtn = new JButton("Previous");
        previousBtn.addActionListener(this);
        add(previousBtn);

        nxtBtn = new JButton("Next");
        nxtBtn.addActionListener(this);
        add(nxtBtn);
    }

    String userInput = JOptionPane.showInputDialog("Please input name of first image file");
    Scanner myScanner = new Scanner(userInput);
    String fileDetail = myScanner.next();
    String[] arr = fileDetail.split("\\.");

    String fileName = arr[0].replaceAll("[0-9.]", "");
    String fileNumber = arr[0].replaceAll("[^0-9]", "");
    String fileFormat = arr[1];

    int num = Integer.parseInt(fileNumber);

    String totalImage = JOptionPane.showInputDialog("Please enter the number of images in total");
    Scanner secondScanner = new Scanner(totalImage);
    int numberInput = secondScanner.nextInt();

    ImageIcon imageGraphic = new ImageIcon(fileName + fileNumber + "." + fileFormat);

    Vector <String> imageDetail = new Vector <String>();
    int total = (num + numberInput);

    for(int i = num; i < total; i++)
    {
    }


public void actionPerformed(ActionEvent e)
    {
    }

}
packageimageviewer;
导入java.awt.Color;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.Scanner;
导入java.util.Vector;
导入javax.swing.ImageIcon;
导入javax.swing.JButton;
导入javax.swing.JLabel;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
公共类ImageViewer扩展JPanel实现ActionListener{
JPanel底板;
JLabel图像标签;
JButton-previousBtn;
JButton-nxtBtn;
ImageViewer()
{
imageLabel=新的JLabel(“图像显示”);
imageLabel.setBackground(颜色:白色);
imageLabel.set不透明(true);
添加(图像标签);
previousBtn=新按钮(“先前”);
previousBtn.addActionListener(此);
添加(以前的BTN);
nxtBtn=新的JButton(“下一步”);
nxtBtn.addActionListener(此);
添加(nxtBtn);
}
字符串userInput=JOptionPane.showInputDialog(“请输入第一个图像文件的名称”);
扫描器myScanner=新扫描器(用户输入);
字符串fileDetail=myScanner.next();
字符串[]arr=fileDetail.split(“\\”);
字符串文件名=arr[0].replaceAll(“[0-9.]”,“”);
字符串fileNumber=arr[0].replaceAll([^0-9],”);
字符串fileFormat=arr[1];
int num=Integer.parseInt(文件号);
字符串totalImage=JOptionPane.showInputDialog(“请输入图像总数”);
扫描仪secondScanner=新扫描仪(totalImage);
int numberInput=secondScanner.nextInt();
ImageIcon imageGraphic=新的ImageIcon(文件名+文件号+文件格式);
Vector imageDetail=新向量();
整数总计=(num+numberInput);
for(int i=num;i
它的错误在于它是在开放空间中声明的,不在任何方法、构造函数、静态块等的范围内,并且在这个区域中不能有for循环或任何类似的控制结构。解决方案:把它放在它所属的地方,不管是方法还是构造函数,都是你的选择

事实上,您的许多行看起来不属于“开放国家”,包括调用JOptionPane的行,以及在其下方使用用户输入的行,我想知道其中一些行属于此类。这个课程应该只专注于一个单一的职责——在这里查看图像,就是这样。你应该重新考虑一下你的程序设计


例如,您似乎希望该类显示一组图像,因此它应该这样做。如果它是我的类,我会给它一些方法,允许其他类给它一个ImageIcons列表,然后所有这些类在按钮按下时滚动图像。任何询问用户从何处开始查找图像的代码都可能位于其他位置,而不在此类中。

您的循环当前位于参数所在的位置。它需要在一个可执行的代码块中,即某种构造函数或方法

如果将for循环放在您拥有它的地方,则实际上无法访问和使用它。通过将其放入构造函数或方法中,您就有了实际使用循环的方法。

非常感谢,先生!你帮了大忙。我将不得不像你建议的那样重新设计。我是一个初学者,不知怎么的,我总是感到困惑