我该如何解决这个错误?线程“main”中的异常java.lang.NoSuchMethodError:main

时间:2011-09-01 21:27:14

标签: java

我编写了这个程序并且可以编译它但是当我去运行它时我得到错误.... 线程“main”中的异常java.lang.NoSuchMethodError:main

有没有人有任何想法如何解决这个问题?

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();

}
}

1 个答案:

答案 0 :(得分:2)

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

例如:

java [options] class [argument ...]

java [options] DVDinventoryProgram [argument ...]