NASA 發問時間: 電腦與網際網路程式設計 · 6 年前

關於static 與 while(true)用法

小弟寫了一個簡單的存提款程式

import java.util.*;

public class AccountPractice {

public static void main(String[] args){

Account account = new Account();

Scanner scanner = new Scanner(System.in);

while(true) { ------> 我是參考別人的寫法 可以解一下while(true)的用法 ?

System.out.print("input deposit amount: ");

int depositAMT = scanner.nextInt();

account.deposit(depositAMT);

System.out.print("input withdraw amount: ");

int withdrawAMT = scanner.nextInt();

account.withdraw(withdrawAMT);

System.out.println("balance is " + account.getBalance());

}

}

public static class Account{ -------> 請問為何一定要static 否則程式就跑不過

private int amount;

private int am;

private int balance =2000;

public void deposit(int amount){

this.amount = amount;

balance +=amount;

}

public void withdraw(int amount){

am = amount;

balance -=am;

}

public int getBalance(){ ---------------->沒有void 就一定需要回傳值 ?

return balance;

}

}

}

2 個解答

評分
  • 阿平
    Lv 4
    6 年前
    最佳解答

    Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing

    http://blog.csdn.net/sunny2038/article/details/692...

    2015-02-14 22:03:05 補充:

    1.while(true)是無窮迴圈的寫法,與for(;;)相同,就是讓程式一直執行。想停止的話可以用break。

    例:

    if(wantExit){

    break;

    }

    2.宣告為static的變數和函數是類別所有,其他非static的變數和函數是物件所有。

    靜態函數中不可使用非static的變數和函數,因為它不知道你指的是哪個物件的。

    參考:static 類別成員

    同理,內部類別宣告為static是類別所有,其他非static的內部類別是物件所有。

    參考:內部類別(Inner class)

    main被宣告為static,為了直接使用內部類別所以要把內部類別宣告為static。另一個方法是先new出一個外部類別的物件,再使用物件中的類別,否則會出現"No enclosing instance of type XXX is accessible. Must qualify the allocation with an enclosing instance of type XXX (e.g. x.new A() where x is an instance of XXX)."

    參考:Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing

    例:

    AccountPractice accountPractice=new AccountPractic();

    Account account =accountPractice.new Account();

    合併成一句

    Account account =new AccountPractice().new Account();

    3.沒有void就一定需要回傳值

    2015-02-15 10:19:31 補充:

    你也可以將內部類別拿到外面,變成一般的類別,這樣就不用加static。

  • 6 年前

    我沒有在學Java,但是我有在學C#

    應該可以了解

    首先了解什麼是While?

    While是迴圈的一種。

    While的執行程序如下:

    http://upload.wikimedia.org/wikipedia/commons/thum...

    程式語法解釋:

    while(1)

    {

    2

    }

    1.這裡是條件語句,也就是說,當這裡的條件符合(true)的話,才會進入迴圈。如果條件不符合(false),就不回進入迴圈。

    2.進入迴圈後,就會執行這裡的程式碼。

    當這裡的程式碼執行完後,又會回到條件語句判斷是否符合。如果條件符合,就會繼續執行,否則就跳出此迴圈。注意不要寫成死循環喔!

    了解while後,來了解什麼是static

    在C#中,類別需要物件化後才能使用,但是如果你加上static後,你就不用物件化了,因此你就可以直接使用。

    類別是什麼?物件化是什麼?

    這會牽扯到物件導向的概念

    我就在這裡間單介紹一下

    假如你現要蓋一座房子,所以你就畫了一張藍圖。

    這張藍圖就是類別,裡面包含了房子的資訊。

    雖然你畫好籃圖了,但是來不能住進去

    因為那只是一張藍圖,不是一個實際的房子

    因此你就需要蓋一間真正房子

    而這間房子就是物件。

    參考資料:
還有問題?馬上發問,尋求解答。