2013-10-05 43 views
0

嗨,大家好,我是一名新的计算机科学专业的学生,​​我试图调用一种方法,并且一直在收到此错误。这里是我的问题区域:错误:无效的方法声明;返回类型ERROR在调用方法时

calcTicket(String driverName, int speedDriving, int speedLimit, String schoolZone); 

这里是整个代码(这不是太长):

import java.util.Scanner; 
public class SpeedingTicket 
{ 

public static void main(String[] args) 
    //Declarations and Instantiations 
{ 
    // Input Data 
    Scanner scan = new Scanner(System.in); 

    System.out.println("Enter driver's name: "); 
    String driverName = scan.nextLine(); 

    System.out.println("Enter driver's speed: "); 
    int speedDriving = scan.nextInt(); 

    System.out.println("Enter speed limit: "); 
    int speedLimit = scan.nextInt(); 
    scan.nextLine(); 

    System.out.println("Was driver in school zone? "); 
    String schoolZone = scan.nextLine(); 

} 

    // Call calcTicket 

    calcTicket(String driverName, int speedDriving, int speedLimit, String schoolZone); 

/** Calculates the cost of a speeding ticket given the speed driven, limit, and if in a school zone. 

*/ 
public static void calcTicket(String driverName, int speedDriving, int speedLimit, String schoolZone) 
{ 
    // Define constants here 

    final int INIT_ADDITIVE = 50; 
    final int NO_MULTIPLIER = 6; 
    final int YES_MULTIPLIER = 12; 
    final int MAX_ADDITIVE = 200; 
    final int EX_THRESH = 30; 

    // Calculations 

    int amountOver = (speedDriving - speedLimit); 

    if (schoolZone.equalsIgnoreCase("yes")) 
    { 
     if (amountOver > 0) 
      { int fine = amountOver * YES_MULTIPLIER + INIT_ADDITIVE; 
      System.out.println(driverName +"owes: $" + fine); 
      } 
     if (amountOver > EX_THRESH) 
      { int fine = amountOver * YES_MULTIPLIER + MAX_ADDITIVE; 
      System.out.println(driverName +"owes: $" + fine); 
      } 
     else 
      { int fine = 0; 
      System.out.println(driverName +"owes: $" + fine); 
      } 
    } 

    if (schoolZone.equalsIgnoreCase("no")) 
    { 

     if (amountOver > 0) 
      { int fine = amountOver * NO_MULTIPLIER + INIT_ADDITIVE; 
      System.out.println(driverName +"owes: $" + fine); 
      } 
     if (amountOver > EX_THRESH) 
      { int fine = amountOver * NO_MULTIPLIER + MAX_ADDITIVE; 
      System.out.println(driverName +"owes: $" + fine); 
      } 
     else 
      { int fine = 0; 
      System.out.println(driverName +"owes: $" + fine); 
      } 
    } 

} 
}  

回答

0

这部分问题

// Call calcTicket 

calcTicket(String driverName, int speedDriving, int speedLimit, String schoolZone); 

你不能有代码只是像这样在一个班上闲逛。把它放到一个方法中 - 我想你想在main()中使用它:

public static void main(String[] args) 
    //Declarations and Instantiations 
{ 
    // Input Data 
    Scanner scan = new Scanner(System.in); 

    System.out.println("Enter driver's name: "); 
    String driverName = scan.nextLine(); 

    System.out.println("Enter driver's speed: "); 
    int speedDriving = scan.nextInt(); 

    System.out.println("Enter speed limit: "); 
    int speedLimit = scan.nextInt(); 
    scan.nextLine(); 

    System.out.println("Was driver in school zone? "); 
    String schoolZone = scan.nextLine(); 

//} --this is not good here! 

    // Call calcTicket 

    calcTicket(String driverName, int speedDriving, int speedLimit, String schoolZone); 

    } //put here instead... 
0

你没有在方法(或构造函数)中调用方法。将回调放在main方法中。

public static void main(String[] args) 
    //Declarations and Instantiations 
{ 
    // Input Data 
    Scanner scan = new Scanner(System.in); 

    System.out.println("Enter driver's name: "); 
    String driverName = scan.nextLine(); 

    System.out.println("Enter driver's speed: "); 
    int speedDriving = scan.nextInt(); 

    System.out.println("Enter speed limit: "); 
    int speedLimit = scan.nextInt(); 
    scan.nextLine(); 

    System.out.println("Was driver in school zone? "); 
    String schoolZone = scan.nextLine(); 

// Call calcTicket 

    calcTicket(String driverName, int speedDriving, int speedLimit, String schoolZone); 

} 
0

我不知道,如果格式化得到扭曲,当你砍,你的代码粘贴到这个问题,但显然你需要调用拉calcTicket进入main身体。是这样的:

... 
System.out.println("Was driver in school zone? "); 
String schoolZone = scan.nextLine(); 

} 

// Call calcTicket 

calcTicket(String driverName, int speedDriving, int speedLimit, String schoolZone); 

到这样的事情:

System.out.println("Was driver in school zone? "); 
String schoolZone = scan.nextLine(); 

// Call calcTicket 
calcTicket(driverName, speedDriving, speedLimit, schoolZone); 
} 

,并确保从通话中删除ARG类型;他们不需要。

相关问题