2011-09-01 98 views
-1

我写了这个程序,可以让它编译,但是当我去运行它时,我得到错误.... 线程“主”java.lang中的异常.NoSuchMethodError:main我该如何解决这个错误?线程“主”java.lang.NoSuchMethodError中的异常:主

没有人有任何想法我可以解决这个问题吗?

public class ProductDVD 
{ 
private String productName; 
private int productID; 
private long unitsInStock; 
private float unitPrice; 

ProductDVD() 
{ 
    setName("UNKNOWN"); 
    setProductID(0); 
    setUnitPrice(0); 
    setUnitsInStock(0); 
} 

ProductDVD(String productName, int productID, float unitPrice, long unitsInStock) 
{ 
    setName(productName); 
    setProductID(productID); 
    setUnitPrice(unitPrice); 
    setUnitsInStock(unitsInStock); 
} 

public void setName(String productName) 
{ 
    this.productName = productName; 
} 

public void setProductID(int productID) 
{ 
    this.productID = productID; 
} 

public void setUnitsInStock(long unitsInStock) 
{ 
    this.unitsInStock = unitsInStock; 
} 

public void setUnitPrice(float unitPrice) 
{ 
    this.unitPrice = unitPrice; 
} 

public String getName() 
{ 
    return productName; 
} 

public int getProductID() 
{ 
    return productID; 
} 

public long getUnitsInStock() 
{ 
    return unitsInStock; 
} 

public float getUnitPrice() 
{ 
    return unitPrice; 
} 

public float getInventoryValue() 
{ 
    return(unitsInStock * unitPrice); 
} 
} 

public class DVDsList extends ProductDVD 
{ 
private String director; 
private float restockfee; 

DVDsList() 
{ 
    super(); 
    director = "Unknown"; 
    restockfee = 0; 
} 

DVDsList(String productName, int productID, float unitPrice, long unitsInStock, String director) 
{ 
    super(productName, productID, unitPrice, unitsInStock); 
    this.director = director; 
} 

public String getDirector() 
{ 
    return director; 
} 
public float getRestockFee() 
{ 
    return restockfee; 
} 
public float getInventoryValue() 
{ 
    restockfee = (5*super.getInventoryValue())/100; 

    return (super.getInventoryValue() + restockfee); 
} 
} 

import java.util.Scanner; 

public class DVDinventoryProgram 
{ 
final int MAX = 5; 
DVDsList dt[] = new DVDsList[MAX]; 
int numberOfDVDs = 0; 

public void arraySort(int count) 
{ 
int pass , i; 
int temp; 
DVDsList s = null; 
if(count > 1) 
{ 
for(pass=1; pass<count; pass++) 
{ 
    for(i=0; i<count-pass; i++) 
    { 
    temp = (dt[i].getName()).compareTo(dt[i+1].getName()); 
     if(temp > 0) 
     { 
     s = dt[i]; 
     dt[i] = dt[i+1]; 
     dt[i+1] = s; 
     } 
    } 
} 
} 
} 

public float totalValueOfInventory() 
{ 
float inventoryValue = 0; 
for(int i=0; i<numberOfDVDs; i++) 
{ 
    inventoryValue = inventoryValue + dt[i].getInventoryValue(); 
    } 
return inventoryValue; 
} 

public void displayDVD(int index) 
{ 
System.out.println("Name:     " + dt[index].getName()); 
System.out.println("ID:      " + dt[index].getProductID()); 
System.out.println("Unit Price:    " + dt[index].getUnitPrice()); 
System.out.println("Units in Stock:   " + dt[index].getUnitsInStock()); 
System.out.println("Total Product Value: " + dt[index].getInventoryValue()); 
System.out.println("Director:    " + dt[index].getDirector()); 
System.out.println("Restocking Fee:   " + dt[index].getRestockFee()); 

System.out.println("\nTotal Value of Inventory: " + totalValueOfInventory()); 
System.out.println(); 
} 

public static void main(String args []) 
{ 
String name; 
int number; 
long stock; 
float price; 
String director; 

DVDinventoryProgram dip = new DVDinventoryProgram(); 

Scanner input = new Scanner(System.in); 

System.out.println(); 
System.out.println("<<<DVD Inventory Program>>>"); 
System.out.println(); 

DVDsList dvd; 

while(true) 
{ 
System.out.println(); 
System.out.print("Enter a DVD Title(or STOP to End Program): "); 
name = input.nextLine(); 

if(name.equalsIgnoreCase("stop")) 
{ 
    break; 
} 

System.out.print("Enter a Product ID: "); 
number = input.nextInt(); 

System.out.print("Enter the Unit Price: "); 
price = input.nextFloat(); 

System.out.print("Enter the Number of Units in Stock: "); 
stock = input.nextLong(); 

input.nextLine(); 

System.out.print("Enter the Name of the Director: "); 
director = input.nextLine(); 

dvd = new DVDsList(name,number,price,stock,director); 

if(dip.numberOfDVDs < dip.MAX) 
{ 
    dip.dt[dip.numberOfDVDs] = dvd; 
    dip.numberOfDVDs++; 
    System.out.println(); 
    System.out.println("<<< NEW DVD >>>"); 
    dip.displayDVD(dip.numberOfDVDs - 1); 
} 
else 
{ 
    System.out.println("\nArray is full. Please stop entering information."); 
} 

} 

dip.arraySort(dip.numberOfDVDs); 

System.out.println("\n<<< DVD LIST BY NAME >>>\n"); 
for(int i = 0; i < dip.numberOfDVDs; i++) 
{ 
    dip.displayDVD(i); 
} 

System.out.println(); 
System.out.println("End of Program."); 
System.out.println(); 

} 
} 
+0

第一步是分析堆栈跟踪并找出发生错误的行。 – 9000

+2

你刚刚问完全相同的问题。也许给人一些时间来回答。还要更正代码的缩进。 –

+0

可能的重复[线程中的异常“main”java.lang.NoSuchMethodError:main - code](http://stackoverflow.com/questions/7276436/exception-in-thread-main-java-lang-nosuchmethoderror-main-代码) –

回答

2

当你调用你的程序时,被调用的类必须有一个“main”方法。在你的情况下,你有DVDinventoryProgram类中定义的方法,这是你需要开始的类。

例如:

的java [选项]类[参数...]

的java [选项] DVDinventoryProgram [参数...]

+0

对不起,我只是不明白。你是说我需要重写主要的方法参数吗? –

+0

你如何开始你的应用程序? – Preston

相关问题