2012-02-22 3 views
1

Мне нужно предисловие к этому, мне не разрешено использовать IDE в классе, я должен использовать TextPad для компиляции и запуска. Любая помощь будет принята с благодарностью.Почему я получаю эту ошибку компиляции?

Здесь есть два файла, один из которых называется Account, а другой - Lab4B. Назначение заключается в создании и использовать следующие файлы: Lab4B.java = исходный код для кода драйвера класса (Lab4B) для задания Account.java = исходный код для класса Account

Инструкции: Design класс с именем учетной запись (который содержит

  1. частного поля ИНТА данных с именем идентификатора для учетной записи (по умолчанию 0).
  2. частного поля двойных данных с именем баланс для учетной записи (по умолчанию 0).
  3. частное поле двойных данных с именем yearInte restRate, который сохраняет текущую процентную ставку (по умолчанию 0). Предположим, что все учетные записи имеют одинаковую процентную ставку.
  4. Закрытое поле данных даты с именем dateCreated, которое хранит дату создания учетной записи.
  5. Конструктор no-arg, который создает учетную запись по умолчанию.
  6. Конструктор, который создает учетную запись с указанным идентификатором и начальным балансом.
  7. Методы доступа и мутатора для id, balance и yearInterestRate.
  8. Способ доступа для даты.
  9. Метод с именем getMonthlyInterestRate(), который возвращает месячную процентную ставку.
  10. Вызывается метод, который снимает указанную сумму со счета.
  11. Метод с депозитом, который откладывает указанную сумму со счета.

Я получаю следующие ошибки: Ошибки при компиляции файла «Lab4B».

F:\Java\Lab 4b\Lab4B.java:13: error: cannot find symbol 
    Account account = new Account(5544, 45000, 0.036); 
^
    symbol: class Account 
    location: class Lab4B 

F:\Java\Lab 4b\Lab4B.java:13: error: cannot find symbol 
    Account account = new Account(5544, 45000, 0.036); 
         ^
    symbol: class Account 
    location: class Lab4B 
2 errors 

Код для "Счет" ниже:

import java.util.Scanner; 
import java.util.Date; 

public class Account 
{ 

    int id = 0; 
    double balance = 0; 
    double annualInterestRate = 0; 
    Date dateCreated; 


    public Account() 
    { 

    } 

    public Account(int id, double balance, double annualInterestRate) 
    { 

    this.id = id; 
    this.balance = balance; 
    this.annualInterestRate = annualInterestRate; 
    this.dateCreated = new Date(); 
    } 

    public void setID (int id) 
    { 
    this.id = id; 
    } 


    public int getID() 
    { 
    return this.id; 
    } 


    public void setBalance (double balance) 
    { 
    this.balance = balance; 
    } 


    public double getbalance() 
    { 
    return this.balance; 
    } 


    public void setAnnualInterestrate (double annualInterestRate) 
    { 
    this.annualInterestRate = annualInterestRate; 
    } 


    public double getAnnualInterestrate() 
    { 
    return this.annualInterestRate; 
    } 


    public Date getDateCreated() 
    { 
    return this.dateCreated; 
    } 


    public double getMonthlyInterestRate() 
    { 
    return (this.annualInterestRate)/12; 
    } 


    public void withdraw(double amount) 
    { 
    this.balance -= amount; 
    System.out.println ("After withdrawing $"+amount +" the balance in your account is:             $ " +this.balance +"\n"); 
    } 


public void deposit(double amount) 
{ 
    this.balance += amount; 
    System.out.println(" After making a deposit of $"+amount +" the balance in your account is: $" +this.balance + "\n"); 
} 
} 

Код для файла Lab4B ниже:

public class Lab4B 
{ 

public static void main(String[] args) 
{ 

    // Creates an instance of Account 

    Account account = new Account(5544, 45000, 0.036); 

    // Sets default amounts 

    account.setID(5544); 
    account.setBalance(45000); 
    account.setAnnualInterestRate(0.036); 
    account.withdraw(3700); 
    account.deposit(2200); 

    // Prints output 

    System.out.println ("Account number: \n"+ +account.getID()); 
    System.out.println ("The account balance is: $ \n" + +account.getbalance()); 
    System.out.println ("The monthly interest earned is: $ \n" + +account.getbalance() * account.annualInterestRate()); 
    System.out.println ("The account was created on: \n" + +account.getdateCreated()); 
} 
} 

Вот ошибки я получаю из компилятора командной строки javac, как предложено:

C:\>javac Lab4B.java 
Lab4B.java:5: error: package mypackage does not exist 
import mypackage.Account; 
       ^
Lab4B.java:15: error: cannot find symbol 
    Account account = new Account(5544, 45000, 0.036); 
^
    symbol: class Account 
    location: class Lab4B 
Lab4B.java:15: error: cannot find symbol 
    Account account = new Account(5544, 45000, 0.036); 
         ^
    symbol: class Account 
    location: class Lab4B 
3 errors 

Вот Javac -verbose выход:

C:\Users\kschultz>cd\ 

C:\>javac -verbose Lab4B.java 
[parsing started RegularFileObject[Lab4B.java]] 
[parsing completed 12ms] 
[search path for source files: .C:\Program Files (x86)\Java\jdk1.7.0_02\lib,C:\P 
rogram Files (x86)\Java\jre6\lib\ext\QTJava.zip] 
[search path for class files: C:\Program Files (x86)\Java\jdk1.7.0_02\jre\lib\re 
sources.jar,C:\Program Files (x86)\Java\jdk1.7.0_02\jre\lib\rt.jar,C:\Program Fi 
les (x86)\Java\jdk1.7.0_02\jre\lib\sunrsasign.jar,C:\Program Files (x86)\Java\jd 
k1.7.0_02\jre\lib\jsse.jar,C:\Program Files (x86)\Java\jdk1.7.0_02\jre\lib\jce.j 
ar,C:\Program Files (x86)\Java\jdk1.7.0_02\jre\lib\charsets.jar,C:\Program Files 
(x86)\Java\jdk1.7.0_02\jre\classes,C:\Program Files (x86)\Java\jdk1.7.0_02\jre\ 
lib\ext\dnsns.jar,C:\Program Files (x86)\Java\jdk1.7.0_02\jre\lib\ext\localedata 
.jar,C:\Program Files (x86)\Java\jdk1.7.0_02\jre\lib\ext\sunec.jar,C:\Program Fi 
les (x86)\Java\jdk1.7.0_02\jre\lib\ext\sunjce_provider.jar,C:\Program Files (x86 
)\Java\jdk1.7.0_02\jre\lib\ext\sunmscapi.jar,C:\Program Files (x86)\Java\jdk1.7. 
0_02\jre\lib\ext\sunpkcs11.jar,C:\Program Files (x86)\Java\jdk1.7.0_02\jre\lib\e 
xt\zipfs.jar,.C:\Program Files (x86)\Java\jdk1.7.0_02\lib,C:\Program Files (x86) 
\Java\jre6\lib\ext\QTJava.zip] 
[loading ZipFileIndexFileObject[C:\Program Files (x86)\Java\jdk1.7.0_02\lib\ct.s 
ym(META-INF/sym/rt.jar/java/lang/Object.class)]] 
[loading ZipFileIndexFileObject[C:\Program Files (x86)\Java\jdk1.7.0_02\lib\ct.s 
ym(META-INF/sym/rt.jar/java/lang/String.class)]] 
[checking Lab4B] 
[loading ZipFileIndexFileObject[C:\Program Files (x86)\Java\jdk1.7.0_02\lib\ct.s 
ym(META-INF/sym/rt.jar/java/lang/AutoCloseable.class)]] 
Lab4B.java:13: error: cannot find symbol 
    Account account = new Account(5544, 45000, 0.036); 
    ^
    symbol: class Account 
    location: class Lab4B 
Lab4B.java:13: error: cannot find symbol 
    Account account = new Account(5544, 45000, 0.036); 
         ^
    symbol: class Account 
    location: class Lab4B 
[loading ZipFileIndexFileObject[C:\Program Files (x86)\Java\jdk1.7.0_02\lib\ct.s 
ym(META-INF/sym/rt.jar/java/lang/System.class)]] 
[loading ZipFileIndexFileObject[C:\Program Files (x86)\Java\jdk1.7.0_02\lib\ct.s 
ym(META-INF/sym/rt.jar/java/io/PrintStream.class)]] 
[loading ZipFileIndexFileObject[C:\Program Files (x86)\Java\jdk1.7.0_02\lib\ct.s 
ym(META-INF/sym/rt.jar/java/io/FilterOutputStream.class)]] 
[loading ZipFileIndexFileObject[C:\Program Files (x86)\Java\jdk1.7.0_02\lib\ct.s 
ym(META-INF/sym/rt.jar/java/io/OutputStream.class)]] 
[total 228ms] 
2 errors 
+1

Что в командной строке вы используете для компиляции? Является ли 'Lab4B.java' в том же каталоге, что и' Account.java'? Вы можете показать список каталогов 'F: \ Java \ Lab 4b'? –

ответ

2

Обе ошибки связаны с одной и той же проблемой.

Lab4B.java:5: error: package mypackage does not exist 
Lab4B.java:15: error: cannot find symbol 

Проблема:

  • Ваш класс счета не содержит объявление пакета. (проверьте, действительно ли класс учетной записи находится в каталоге «mypackage»)
  • Ваш класс Lab4B не содержит импорт пакета.

Решение:

декларация пакета Синтаксис

package mypackage; 
import java.util.Scanner; 
import java.util.Date; 
public class Account { 
    //rest of the code 

Оператор заказа выглядит следующим образом.

  1. Пакет statment (по желанию).
  2. Импорт (опционально).
  3. Определения классов или интерфейсов.

пакет синтаксис импорта

import mypackage.Account; 
public class Lab4B 
{ 
    //rest of code 

Есть 3 способа можно указать импорт пакетов.

Класс JOptionPane находится в пакете Swing, который находится в пакете javax. Символ подстановки (*) используется для указания того, что все классы с этим пакетом доступны для вашей программы. Это самый распространенный стиль программирования.

import javax.swing.*; // Make all classes visible altho only one is used. 

class ImportTest { 
    public static void main(String[] args) { 
     JOptionPane.showMessageDialog(null, "Hi"); 
     System.exit(0); 
    } 
} 

Классы могут быть указаны явно при импорте вместо использования символа подстановки.

import javax.swing.JOptionPane; // Make a single class visible. 

class ImportTest { 
    public static void main(String[] args) { 
     JOptionPane.showMessageDialog(null, "Hi"); 
     System.exit(0); 
    } 
} 

В качестве альтернативы мы можем получить полное имя класса без импорта.

class ImportTest { 
    public static void main(String[] args) { 
     javax.swing.JOptionPane.showMessageDialog(null, "Hi"); 
     System.exit(0); 
    } 
} 

Вы можете прочитать больше о пакетах here

0

Вам нужно импортировать Account класс в вашем Lab4B классе. Что-то вдоль линий:

import mypackage.Account; 

Put это в верхней части Lab4B класса, перед любым другим кодом.

Надеюсь, это поможет.

+0

Это, похоже, не сработало. У меня теперь есть следующая ошибка в дополнение к оригинальным. F: \ Java \ Lab 4b \ Lab4B.java: 5: ошибка: пакет mypackage не существует import mypackage.Account; ^ F: \ Java \ Lab 4b \ Lab4B.java: 15: ошибка: не удалось найти символ Учетная запись = новая учетная запись (5544, 45000, 0.036); ^ Код: местоположение: класс Lab4B F: \ Java \ Lab 4b \ Lab4B.java: 15: ошибка: не найден символ Учетная запись = новая учетная запись (5544, 45000, 0,036); ^ символ: класс Учетная запись местоположение: класс Lab4B 3 ошибки –

1

Когда компилятор Java компилирует Lab4B.java, он захочет найти (или скомпилировать) класс Account. Компилятор говорит, что он не смог найти класс Account.

возможности Пару этой проблемы:

  • «Account.java» не находится в той же директории, что «Lab4B.java» - обратите внимание, что имя чувствительно к регистру. Если файл имеет имя «account.java», компилятор не найдет класс Account.

  • «Account.java» не должен находиться в том же каталоге, что и «Lab4B.java», - если это так, оно находится в другом пакете. Вам понадобится import пакет, в котором может быть найден класс Account, или вам нужно указать полное имя пакета при обращении к классу Account в классе Lab4B. Вам также необходимо убедиться, что CLASSPATH настроен правильно, если это необходимо.


Обновления на основе -verbose выхода компилятора:

Проблема выглядит это потому, что что-то установка SourcePath Java-компилятор к неверному значению:

[search path for source files: .C:\Program Files (x86)\Java\jdk1.7.0_02\lib,C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip] 

Проблема в том что текущий каталог не находится в пути поиска (. был объединен с другим путем без разделителя). Похоже, что у вас есть переменная окружения CLASSPATH, которая не имеет полуколонии после . части конфигурации пути к классам.

Исправить это, и компилятор должен уметь находить Account.java. Затем вы получите несколько ошибок компилятора из-за опечаток в исходных файлах, которые должны быть исправлены.

+0

Вот путь, F: \ Java \ Lab 4b. Они оба находятся в одном каталоге. F: \ Java \ Lab 4b \ Account.java & F: \ Java \ Lab 4b \ Lab4B.java. Путь к классам выглядит следующим образом: .C: \ Program Files (x86) \ Java \ jdk1.7.0_02 \ lib; C: \ Program Files (x86) \ Java \ jre6 \ lib \ ext \ QTJava.zip Путь к системной переменной : C: \ Program Files (x86) \ Pervasive Software \ PSQL \ bin \ ;; c: \ Program Files (x86) \ Microsoft SQL Server \ 90 \ Tools \ bin \; C: \ Program Files (x86) \ Common Files \ Netop \; C: \ Program Files (x86) \ Java \ jdk1.7.0_02 \ bin; –

+0

Похоже, 'javac' должен быть в состоянии найти' Account.java', поэтому я не уверен, что происходит. Попробуйте 'javac -verbose Lab4B.java' и опубликуйте вывод в нижней части своего вопроса. –

+0

Файлы находятся в том же каталоге, и @Michael Burr Я не понимаю, что вы говорите. –

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