2012-02-22 75 views
1

我需要在這個前面加上我不允許在類中使用IDE,我必須使用TextPad來編譯和運行。任何幫助將不勝感激。爲什麼我得到這個編譯錯誤?

這裏有兩個文件,一個叫Account,另一個叫Lab4B。該任務是創建和使用下列文件:用於爲分配 爲Account類Account.java =源代碼

的指令驅動程序代碼類(Lab4B) Lab4B.java =源代碼: 設計一類命名的帳戶(包含

  1. 私人int數據字段中指定的ID爲帳戶(默認爲0)。該帳戶(默認爲0)命名的平衡
  2. 私人雙數據字段。
  3. 一私人雙數據字段名爲annualInte restRate存儲當前利率(默認爲0)。假設所有賬戶都有相同的利率。
  4. 一個名爲dateCreated的私有日期數據字段,用於存儲創建帳戶的日期。
  5. 創建默認帳戶的無參數構造函數。
  6. 一個構造函數,它創建一個具有指定ID和初始餘額的帳戶。
  7. id,balance和annualInterestRate的訪問器和增變器方法。
  8. dateCreated的存取方法。
  9. 一種名爲getMonthlyInterestRate()的方法,返回每月利率。
  10. 一個名爲withdraw的方法從賬戶中提取一個指定的金額。
  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」嗎? – 2012-02-22 23:39:08

回答

2

您的兩個錯誤都與相同的問題有關。

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

問題

  • 你的帳戶類不包含包聲明。 (檢查Account類是否真的在「mypackage」目錄中)
  • 您的Lab4B類不包含軟件包導入。

解決方案

包裝聲明語法

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

聲明順序如下。

  1. Package 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

您需要導入您的Lab4BAccount類。沿着線的東西:

import mypackage.Account; 

把這個在Lab4B類的頂部,任何其他代碼之前。

希望這會有所幫助。

+0

這似乎沒有工作。我現在除了原來的以外還有以下錯誤。 F:\ Java \ Lab 4b \ Lab4B.java:5:錯誤:軟件包mypackage不存在 import mypackage.Account; ^ F:\ Java \ Lab 4b \ Lab4B.java:15:error:can not find symbol Account account = new Account(5544,45000,0.036); ^ symbol:class Account location:class Lab4B F:\ Java \ Lab 4b \ Lab4B.java:15:error:找不到符號 Account account = new Account(5544,45000,0.036); ^ symbol:class Account location:class Lab4B 3 errors – 2012-02-22 23:02:38

1

當Java編譯器編譯Lab4B.java時,它會希望能夠找到(或編譯)Account類。編譯器說它無法找到Account類。

一對夫婦的可能性這個問題:

  • 「Account.java」是不是在同一個目錄中「Lab4B.java」 - 注意,名稱是區分大小寫的。如果文件名爲「account.java」,編譯器將不會找到Account類。

  • 「Account.java」不應該與「Lab4B.java」位於同一目錄中 - 如果是這種情況,它是在不同的包中。您需要import可找到Account類的程序包,或者在參考Lab4B類中的Account類時需要指定完整程序包名稱。如果合適,您還需要確保CLASSPATH配置正確。


更新基於編譯器的-verbose輸出:

的問題看起來像它的,因爲事情是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; – 2012-02-23 00:31:57

+0

它看起來像'javac'應該能夠找到'Account.java',所以我不確定發生了什麼。試試'javac -verbose Lab4B.java'並將輸出發佈到問題的底部。 – 2012-02-23 00:42:55

+0

這些文件在同一個目錄下,@Michael Burr我不明白你在說什麼。 – 2012-02-23 00:46:48