我不断收到错误消息,“系统找不到合适的主要方法。” - Java

问题描述:

我正在为我的操作系统类开发一个项目,并且我们需要创建一个程序来读取3位整数的文本文件,解释整数的每个数字以完成指定的任务,然后打印在执行结束时取出每个寄存器的值。我不断收到错误消息,“系统找不到合适的主要方法。” - Java

我确定我的代码不是完整的雄辩,但我现在面临的主要问题是每次我尝试运行它时,都会出现错误“系统找不到合适的主要方法。 “没有编译器错误。 Java文件的名称是“Assignment1.java” 任何帮助表示赞赏。

import java.util.Scanner; 
import java.io.*; 

public class Assignment1 
{    
    public static void main(String[] args) throws FileNotFoundException 
    { 
     try 
     { 
      int counter = 0; 
      int[] registers = new int[10]; // Create an array of integers to represent the instruction registers 

       for(int i = 0; i < registers.length; i++) // Initialize each register to 0 
       { 
        registers[i] = 0; 
       } 

      Scanner fileScan = new Scanner(new File("input1.txt")); 
      fileScan.useDelimiter(" "); 

      while(fileScan.hasNext()) 
      { 
       number = fileScan.nextInt(); // Scan the instruction 
       String instr = number.toString(); // Convert the instruction to a String 

       if(instr.length()=3 && counter<=1000) // Verify no more than 1000 instructions will be executed and they are 3-digit numbers 
       { 
        executeInstr(instr); 
       } 
      } 

      System.out.println("Register 0: " + registers[0]); 
      System.out.println("Register 1: " + registers[1]); 
      System.out.println("Register 2: " + registers[2]); 
      System.out.println("Register 3: " + registers[3]); 
      System.out.println("Register 4: " + registers[4]); 
      System.out.println("Register 5: " + registers[5]); 
      System.out.println("Register 6: " + registers[6]); 
      System.out.println("Register 7: " + registers[7]); 
      System.out.println("Register 8: " + registers[8]); 
      System.out.println("Register 9: " + registers[9]); 
      System.out.println(); 
      System.out.println("Number of instructions executed: " + counter); 

     } 

     catch(FileNotFoundException ex) 
     { 
      System.out.println("An error has occured. The file cannot be found."); 
     } 
    } 

    public static void executeInstr(String s) // method to implement instructions 
      { 
       instruction = s;  
       counter++; 
       int dig1 = (int)instruction.charAt(0); // convert first digit of the instruction to an integer variable 
       int dig2 = (int)instruction.charAt(1); // convert second digit of the instruction to an integer variable 
       int dig3 = (int)instruction.charAt(2); // convert third digit of the instruction to an integer variable 

       case 1: dig1=1 
        break; 
       case 2: dig1=2 
        registers[dig2]=dig3; 
        break; 
       case 3: dig1=3 
        registers[dig2]=registers[dig2]+dig3; 
        break; 
       case 4: dig1=4 
        registers[dig2]=registers[dig2]*dig3; 
        break; 
       case 5: dig1=5 
        registers[dig2]=dig3; 
        break; 
       case 6: dig1=6 
        registers[dig2]=dig2+dig3; 
        break; 
       case 7: dig1=7 
        registers[dig2]=registers[dig2]*dig3; 
        break; 
       case 8: dig1=8 
        break; 
       case 9: dig1=9 
        break; 
       case 10: dig1=0 
        break; 
       default: 
        System.out.println("Invalid entry."); 
        break; 
      } 
} 
+1

你是怎么试着运行它的?这也可能有助于了解您正在使用的操作系统。 – ajb 2015-02-09 00:48:48

+0

您确定您向我们显示的代码是您编译的代码吗?你发布的代码似乎有一个方法('executeInstr')直接嵌套在你的main方法中,这在Java中是不允许的。所以它不应该用你给我们的代码编译。 – ajb 2015-02-09 00:52:12

+0

Windows 8.1。是的,整个代码就是我编写的代码。如果这有所作为,我正在使用JCreator Pro。 – Morgan4568771 2015-02-09 01:10:54

我看到的一个问题是您在主要方法中嵌套了public static void executeInstr(String s)。这是被禁止的。相反,将您的方法移动到您的Assignment1类中,就像您的主要方法一样。

public class Assignment1 { 
    public static void executeInstr(String s) { 
    // your method logic here 
    } 

    public static void main(String[] args) { 
    // your main program code here 
    executeInstr(myString); 
    } 
} 

这应该为你编译和运行。

+0

我试过你的建议,但我仍然得到同样的错误,但我明白这是问题的一部分。我在原始问题中编辑我的代码以反映这一点。谢谢你的帮助。 – Morgan4568771 2015-02-09 01:08:37

+0

@Morgan这也可能是你没有运行正确的文件。如果您选择在IDE中运行错误的文件或使用java命令创建文件名错字,则可能会发生这种情况。确保你运行Assignment1 – 2015-02-10 15:15:51

+0

事实证明,我没有正确配置JDK。经过一些小的编辑,现在一切正常运行。谢谢你的帮助!这就是我找到解决方案的原因。 – Morgan4568771 2015-02-13 02:29:22