2014-10-22 2 views
0

Наше задание состояло в том, чтобы взять код, который нам дал наш инструктор, и написать методы, которые этот код вызывает в отдельном java-файле. После этого мы должны поместить его в ту же папку. Вот код, он дал нам:Компилятор Java не найдет методы из другого файла Java в той же папке?

import java.util.Scanner; 

public class CSCD210Lab9 
{ 
    public static void main(String [] args) 
    { 
     Scanner kb = new Scanner(System.in); 

     String name = null; 
     double height, weight; 

     do 
     { 
     name = Lab9Methods.readName(kb); 
     height = Lab9Methods.readInfo(kb, "height"); 
     weight = Lab9Methods.readInfo("weight", kb); 
     Lab9Methods.displayResults(name, height, weight, Lab9Methods.calcBMI(height, weight)); 

     }while(Lab9Methods.goAgain(kb)); 

    }// end main 

}// end class 

Я скомпилировал файл, который я написал методы, и это нормально компилируется, ошибок нет вообще. Однако, когда я собираюсь скомпилировать этот код сразу после, компилятор указывает на каждый экземпляр, где написаны Lab9Methods, и он дает ошибку «ошибка: не может найти символ».

Я не понимаю, почему он не будет читать методы из другого файла, даже если оба файла находятся в одной папке. Я делаю что-то неправильно?

EDIT

Вот код для моего класса Lab9Methods.

import java.util.Scanner; 

public class Lab9Methods 
{ 



     public static String readName(final Scanner kb)throws Exception 
     { 
     if(kb == null) 
     throw new RuntimeException("Precondition not met"); 

     String name; 
     System.out.println("Please enter the person's name: "); 
     name = kb.nextLine(); 

     return name;  
     } 


     public static double readInfo(final Scanner kb, final String str) 
     { 

     System.out.println("Please enter your" + str + ";"); 

     double height = kb.nextDouble(); 

     return height; 
     } 


     public static double readInfo(final String str ,final Scanner kb) 
     { 


     System.out.println("Please enter your" + str + ";"); 
     double weight = readInfo(kb,str); 

     return weight; 

     } 

     public static int calcBMI(double height, double weight) 
     { 
     int calcBMI = (int)(weight/((height * height) * 703)); 

     return calcBMI ; 


     } 


     public static void displayResults(final String name, final double height, final double weight, final double bmi) 
     { 

     System.out.println(name + "with a weight of" + weight + "and a height of" + height + " " + bmi); 
     if(bmi < 18.5) 
     { 
     System.out.println("You are underweight"); 
     } 
     else if(bmi > 18.6 && bmi < 24.9) 
     { 
     System.out.println("You are normal"); 
     } 
     else if(bmi > 25.1 && bmi < 29.9) 
     { 
     System.out.println("You are overweight"); 
     } 
     else if(bmi > 29.9) 
     { 
     System.out.println("You are obese"); 
     }   
    } 

    public static boolean goAgain(final Scanner kb) 
    { 
     boolean goAgain = false; 
     String answer; 
     System.out.println("Do you want to go again (Yes/No) :"); 
     answer = kb.nextLine(); 

     while(!answer.equals("yes") && !answer.equals("no")) 
     { 
     System.out.print("Error re-try, Do you want to go again (Yes/No) :"); 
     answer = kb.nextLine(); 
     } 
     if(answer.equals("yes")) 
     { 
     goAgain = true; 
     } 
     else if(answer.equals("no")) 
     { 
     goAgain = false; 
     } 
     return goAgain; 
    }  

} 
+0

если возможно, можете ли вы опубликовать структуру классов Lab9Methods. – Jimmy

+0

Да, я поправился. – kjdhefiu

+1

Теперь вы можете добавить команду, которую вы использовали для компиляции и запуска. и ваш рабочий каталог, откуда вы выполнили команду и каталог, в котором были созданы ваши файлы классов/источник. – Jimmy

ответ

0

Попробуйте загрузить IDE (Eclipse, IntelliJ или Community Edition, например) и делать проект в этом. Я предполагаю, что вам нужно объявить «пакет», который должен отобразиться в каталоге, в котором находятся ваши классы.

И скажите вашему преподавателю свой стиль больше C, чем Java, и что // end main и // end class вышел из моды давно;)

+0

Ха-ха, я согласен, но он один из тех учителей стиля «старого поколения». И я собираю эти файлы в среде IDE. JGrasp. – kjdhefiu

+0

Если вы не объявляете пакет, вы получаете значение по умолчанию (которое сопоставляется с текущим каталогом во время компиляции и запуска). Ни один класс не объявляет один, так как они находятся в одном каталоге, они находятся в одном пакете. –

Смежные вопросы