无法解析为变量



好的,所以,我在编写这个程序时遇到了问题,它似乎都能工作,除了最后一件事,它一直说它无法将计算解析为变量。这是我的密码。我需要使字符串计算显示在窗口上。

import java.awt.*; 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import javax.swing.*; 
public class Mover  {
    public static void main(String[] args) throws IOException, InterruptedException {   
        String usb = new File(".").getAbsolutePath();
        String user = System.getProperty("user.home") + "/Desktop";
        File TS3S = new File(usb + "/Teamspeak 3");
        File TS3D = new File(user + "/TS3");
        File MinecraftLauncherS = new File(usb + "/Minecraft");
        File MinecraftLauncherD = new File(user);
        File ShortcutS = new File(usb + "/Shortcuts");
        File ShortcutD = new File(user);
        File MinecraftFilesS = new File(usb + "/minecraft files");
        File MinecraftFilesD = new File(user + "/Application Data");
        //make sure source exists
        if(!TS3S.exists()){
           System.out.println("Directory does not exist.");
           //just exit
           System.exit(0);
        }else{
           try{
            copyFolder(TS3S,TS3D);
           }catch(IOException e){
            e.printStackTrace();
            //error, just exit
                System.exit(0);
           }
        }
        //make sure source exists
        if(!MinecraftLauncherS.exists()){
           System.out.println("Directory does not exist.");
           //just exit
           System.exit(0);
        }else{
           try{
            copyFolder(MinecraftLauncherS,MinecraftLauncherD);
           }catch(IOException e){
            e.printStackTrace();
            //error, just exit
                System.exit(0);
           }
        }
        //make sure source exists
        if(!ShortcutS.exists()){
           System.out.println("Directory does not exist.");
           //just exit
           System.exit(0);
        }else{
           try{
            copyFolder(ShortcutS,ShortcutD);
           }catch(IOException e){
            e.printStackTrace();
            //error, just exit
                System.exit(0);
           }
        }
        //make sure source exists
        if(!MinecraftFilesS.exists()){
           System.out.println("Directory does not exist.");
           //just exit
           System.exit(0);
        }else{
           try{
            copyFolder(MinecraftFilesS,MinecraftFilesD);
           }catch(IOException e){
            e.printStackTrace();
            //error, just exit
                System.exit(0);
           }
        }

        System.out.println("Done");
        Runtime.getRuntime ().exec (user + "/TS3/ts3client_win32.exe");
        System.exit(0);
        }
    public static void copyFolder(File src, File dest)
        throws IOException{
        if(src.isDirectory()){
            //if directory not exists, create it
            if(!dest.exists()){
               dest.mkdir();
               System.out.println("Directory copied from " 
                              + src + "  to " + dest);
            }
            //list all the directory contents
            String files[] = src.list();
            for (String file : files) {
               //construct the src and dest file structure
               File srcFile = new File(src, file);
               File destFile = new File(dest, file);
               //recursive copy
               copyFolder(srcFile,destFile);
            }
        }else{
            //if file, then copy it
            //Use bytes stream to support all file types
            InputStream in = new FileInputStream(src);
                OutputStream out = new FileOutputStream(dest); 
                byte[] buffer = new byte[1024];
                int length;
                //copy the file content in bytes 
                while ((length = in.read(buffer)) > 0){
                   out.write(buffer, 0, length);
                }
                in.close();
                out.close();
                System.out.println("File copied from " + src + " to " + dest);
                //read it with BufferedReader
                BufferedReader br
                    = new BufferedReader(
                        new InputStreamReader(in));
                StringBuilder sb = new StringBuilder();
                String compute;
                while ((compute = br.readLine()) != null) {
                    sb.append(compute);
                }
        }
    }
private static void createWindow() {
   //Create and set up the window. 
   JFrame a = new JFrame("Processing....");
   a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
   JLabel b = new JLabel(compute,SwingConstants.CENTER); 
   b.setPreferredSize(new Dimension(300, 100)); 
   a.getContentPane().add(b, BorderLayout.CENTER); 
   //Display the window. 
   a.setLocationRelativeTo(null); 
   a.pack();
   a.setVisible(true); 
}
public static void window(String[] args) {
   createWindow();
}

}

您在copyFolder()函数中将compute声明为局部变量,但在createWindow函数中使用它,因此它超出了createWindow函数的范围

您可以将其作为类级别的变量,并对类进行新的操作以获得实例,而不是静态地访问方法

public class Mover  {
    //make it public if you want to access it directly from an instance (object)
    //of this class (myMover), else keep it private - it will be accessible only
    //in this class
    //you could also make it static but that will have limitations (can be accessed
    //only from static functions and value will be shared by all objects of this class
    public String compute;
    public static void main(String[] args) throws IOException, InterruptedException {   
       //an object of this class needs to be created only if compute is non-static
       Mover myMover = new Mover();
       //access compute variable using myMover.compute
       // invoke your methods using myMover.copyFolder() etc
    }
}

在这一行:

JLabel b = new JLabel(compute,SwingConstants.CENTER); 

未声明计算!!!

相关内容

  • 没有找到相关文章

最新更新