简体   繁体   English

“找不到符号:方法”但方法是在 Storm.java 中定义和声明的

[英]"Cannot find symbol: Method" but method is defined and declared in Storm.java

In my driver program methods: setDuration, setWind, setPressure, NewStorm, getCategory cannot not be found although they are clearly declared in my Storm.java file.在我的驱动程序方法中:setDuration、setWind、setPressure、NewStorm、getCategory 无法找到,尽管它们在我的 Storm.java 文件中明确声明。 I can't refer to any of them.我不能提到他们中的任何一个。

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;
            }
        }
    }
}
}

And this is the Storm.java.这是 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); 

}

}

I am pretty sure it has something to do with the default constructor that NetBeans creates, I'm just not sure where that exact problem is located..我很确定它与 NetBeans 创建的默认构造函数有关,我只是不确定那个确切的问题所在..

Java is case sensitive, SetWind is not the same as setWind Java 区分大小写, SetWindsetWind

The method in Storm is defined as setWind Storm的方法定义为setWind

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

But you are using SetWind in you code NewStorm.SetWind(wind);但是你在你的代码中使用了SetWind NewStorm.SetWind(wind);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM