2017-10-22 55 views
2

在我的驅動程序方法:setDuration,setWind,setPressure,NewStorm,的getCategory不能沒有找到,雖然它們在我的Storm.java文件明確宣佈。我不能提及他們中的任何一個。「找不到符號:方法」,但方法的定義,並宣佈在Storm.java

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

public class StormChaser { 
public static void main(String[] args) 
{ 
    // Constants 
final int MAX_STORMS = 200; 

Storm[] List = new Storm[MAX_STORMS]; // array of Storms 
Storm CurrentStorm;  // storm returned by GetStorm 
int NStorms = 0;   // number in array List 
int Total = 0;   // total number of storms in the input file 
Scanner fileInput; 

    // Openning hurricane data file 
    try{ 
    System.out.println("Openning hurricane data file..."); 
    fileInput = new Scanner(new File("hurricane.data")); 
    } 
    catch(FileNotFoundException e){ 
    System.err.println("FileNotFoundException: " + e.getMessage()); 
    return; 
    } 
    System.out.println("File opened successfully..."); 
    System.out.println("Reading file..."); 


    // Read Storm data from file until EOF 

    while(fileInput.hasNextLine()) 
    { 
    CurrentStorm = GetStorm(fileInput); 
     ++Total; 
    if(CurrentStorm.getCategory() >= 3) 
    { 
      List[NStorms++] = CurrentStorm; 
    } 
} 
System.out.println("Number of storms: " + Total); 
System.out.println("Hurricanes with category 3 and above: " + NStorms); 
DisplayStorms("First Ten Storms", List, 10); 
Sort(List, NStorms); 
DisplayStorms("Top Ten Storms", List, 10); 
fileInput.close(); 
} 

public static Storm GetStorm(Scanner in) 
{ 
    // Build a Storm object and return it 

int year = 0, month = 0, day = 0, hour = 0, sequence = 0, wind = 0, pressure 
= 0; 
String name = new String(); 
double junk = 0.0; 
    int current = 0, beginDate = 0, duration = 0; 
Storm NewStorm; 

    // Check for end of file 
    if(!in.hasNextLine()) 
    { 
     NewStorm = new Storm(beginDate, duration, name, wind, pressure); 
     return NewStorm; 
    }  

// Read next record. 
year = in.nextInt(); 
    month = in.nextInt(); 
    day = in.nextInt(); 
    hour = in.nextInt(); 
    sequence = in.nextInt(); 
    name = in.next(); 
    junk = in.nextDouble(); 
    junk = in.nextDouble(); 
    wind = in.nextInt(); 
    pressure = in.nextInt(); 


    // Make a storm object and initialize it with info from the current 
record 
    beginDate = year * 10000 + month * 100 + day; 
    NewStorm = new Storm(beginDate, duration, name, wind, pressure); 
    current = sequence; 


    while(in.hasNextLine() && current == sequence) 
    { 
     //update storm info 
      duration += 6; 
      NewStorm.setDuration(duration); 
      NewStorm.SetWind(wind); 
      NewStorm.setPressure(pressure); 


     //get next record 

    } 

    // and return the new storm object 
    return NewStorm; 
} 

public static void DisplayStorms(String title, Storm[] List, int NStorms) 
{ 
    // display NStorms storms 
    // print some title and column headings 
    System.out.println(title + "\n"); 
    System.out.println("Begin Date Duration Name Category Maximum  
Minimum"); 
    System.out.println("    (hours)      Winds (mph) 
Press. (mb)"); 
    System.out.println("---------------------------------------------------- 
---- 
--------"); 
    for(int k = 0; k < NStorms; k++) 
     System.out.println(List[k].toString()); 
    System.out.println ("\n"); 
} 

public static void Sort(Storm[] StormList, int N) 
{ 
    // bubble sort the list of Storms 
    int pass = 0, k, switches; 
    Storm temp; 
    switches = 1; 
    while(switches != 0) 
    { 
     switches = 0; 
     pass++; 
     for(k = 0; k < N - pass; k++) 
     { 
      if(StormList[k].getCategory() < StormList[k+1].getCategory()) 
      { 
       temp = StormList[k]; 
       StormList[k] = StormList[k+1]; 
       StormList[k+1] = temp; 
       switches = 1; 
      } 
     } 
    } 
} 
} 

這是Storm.java。

public class Storm { 
    private final double KnotsToMPH = 1.15; 

// global user-defined types: 
private int beginDate = 0; 
private int duration = 0; 
private String name; 
private int category = 0; 
private int wind = 0; 
private int pressure = 0; 

public Storm(int bdate, int dur, String sname, int w, int p) 
{ 
beginDate = bdate; 
setDuration(dur); 
name = sname; 
wind = 0; 
pressure = 0; 
setWind(w); 
setPressure(p); 
} 

public void setDuration(int d) 
{ 
duration = d;   
} 

public void setWind(int w) 
{ 
double temp = 0.0;  
temp = KnotsToMPH * w; 
if(temp > wind) 
    wind = (int)temp; 
SaffirSimpson(); 

} 

public void setPressure(int p) 
{ 
if(pressure == 0) 
    pressure = p; 
if(pressure > p && p != 0) 
    pressure = p; 
SaffirSimpson(); 
} 

public void SaffirSimpson() 
{ 
// Compute storm category, using the Saffir-Simpson scale 
if(pressure <= 920 && wind >= 156) 
{ 
    category = 5; // Category 5 
} 
if(pressure > 920 && wind < 156) 
{ 
category = 4; // Category 4 
} 
if(pressure > 945 && wind < 113) 
{ 
    category = 3; // Category 3 
} 
if(pressure > 965 && wind < 96) 
{ 
    category = 2; // Category 2 
}  
if(pressure > 980 && wind < 83) 
{ 
    category = 1; // Category 1 
} 
if(wind < 64) 
{ 
    category = -1; // Tropical Storm 
}  
if(wind < 34) 
{ 
    category = -2; // Tropical Depression 
} 
if(pressure == 0) 
{ 
    category = 0; // Missing pressure 
} 
} 

public int getCategory() 
{ 
return category;  
} 

public String toString() 
{ 
    return String.format("%9d %8d %10s %4d %9d %10d\n", beginDate, 
duration, 
name, category, wind, pressure); 

} 

} 

我敢肯定它是與NetBeans創建,我只是不知道在哪裏,準確的問題所在的默認構造函數..

+1

請遵守遵循Java命名約定的習慣。第一個字母大寫的類名是駱駝大小寫。變量和方法是第一個字母小寫的駱駝案例。 –

+0

@TimBiegeleisen我會的,謝謝。 –

+1

Java是區分大小寫的,'SetWind'並不像'setWind' – MadProgrammer

回答

1

Java是大小寫敏感的,SetWind不相同setWind

Storm的方法被定義爲setWind

public static class Storm { 
    //... 
    public void setWind(int w) { 
     //... 
    } 
    //... 
} 

但是您在代碼中使用的是SetWindNewStorm.SetWind(wind);

+0

謝謝,我已經改變了這一點,但NewStorm.setWind(wind)中仍然存在「無法找到符號」錯誤,並且持續時間和壓力也不同 –