2012-03-13 85 views
1

我希望能夠創建一個for循環這樣對於每個循環和for循環的Java

For(each booking) 

所有你專家在那裏聽起來很簡單,但香港專業教育學院試圖研究如何做到這一點, 及其給我留下了有點迷糊,

我認爲ID需要每個循環,這將是這樣的

for (type var : coll) { 
    body-of-loop 
    } 

這個程序創建一個新的預訂,然後讓我們呃把這些細節輸入到預訂的程序中,我已經命名了這個B1。這是你輸入到for循環的值嗎?

我知道生病得到了評價,但我不明白我是如何得到它爲每個預訂循環。

感謝您的快速回答,我編寫了一些現在不適合提供的代碼。希望它能讓你更容易看到。

訂座艙位

public class Booking 
{ 

    private int bookingId; 
    private String route; 
    private double startTime; 
    private String bookingDate; 

    public Booking() 
    { 
     bookingId = 0000; 
     route = "No Route Entered"; 
     startTime = 0.00; 
     bookingDate = "No Date entered"; 
    } 

    public int getBookingId() 
    { 
     return bookingId; 
    } 

    public String getRoute() 
    { 
     return route; 
    } 

    public double getStartTime() 
    { 
     return startTime; 
    } 

    public String getBookingDate() 
    { 
     return bookingDate; 
    } 

    public void setBookingId(int bookingId) 
    { 
     this.bookingId = bookingId; 
    } 

    public void setRoute(String route) 
    { 
     this.route = route; 
    } 

    public void setStartTime(double startTime) 
    { 
     this.startTime = startTime; 
    } 


    public void setBookingDate(String bookingDate) 
    { 
     this.bookingDate = bookingDate; 
    } 

    public Booking(int bookingId, String route, double startTime, String bookingDate) 
    { 
     setBookingId(bookingId); 
     setRoute(route); 
     setStartTime(startTime); 
     setBookingDate(bookingDate); 
    } 

    public String toString() 
    { 
     return "BookingId: " + getBookingId() + "\nRoute: " + getRoute() + "\nStart Time: " + getStartTime() + 
       "\nBooking Date: " + getBookingDate(); 


    } 

} 

主類

import java.util.*; 

public class Main { 

    public static void main(String[] args) { 

     //<editor-fold defaultstate="collapsed" desc="Creates new Student and booking">  

     Student s1 = new Student(); 
     Booking b1 = new Booking(); 


     s1.setStudentId(Integer.parseInt(JOptionPane.showInputDialog("Enter ID for Student: [0001]"))); 
     s1.setFname(JOptionPane.showInputDialog("Enter first name of Student: ")); 
     s1.setLname(JOptionPane.showInputDialog("Enter last name of Student: ")); 
     s1.setAddress(JOptionPane.showInputDialog("Enter address for Student: ")); 
     s1.setPhoneNo(JOptionPane.showInputDialog("Enter phone number for Student: ")); 
     s1.setOtherDetails(JOptionPane.showInputDialog("Enter other details for Student: [Glasses?]")); 

     b1.setBookingId(0002); 
     b1.setStartTime(Double.parseDouble(JOptionPane.showInputDialog("Enter Start time for Booking: [1200]"))); 
     b1.setBookingDate(JOptionPane.showInputDialog("Enter Date for Booking: [01-JAN-12]")); 


    //</editor-fold> 


    //For Each Booking 


     } 

    } 
} 
+0

如果你花費了相同的努力來解釋你想要的數額而不是你花費的時間,我會理解你的問題。 – UmNyobe 2012-03-13 13:12:22

+1

不知道你在做什麼。對於每個循環只能與實現'Iterable'的類一起使用。通常,對於每個循環,也不應該用來修改它們迭代的Iterable。您是否試圖通過迭代每個字段來初始化預訂? – Dunes 2012-03-13 13:16:20

+0

我添加了代碼Iive,應該幫助 – user1081326 2012-03-13 13:27:02

回答

3
List <Booking> allBookings = new ArrayList<Booking>(); 
//fill your AllBookings with data 
for(Booking b:allBookings){ 
    body of loop // b is your actual Booking Object 
} 

像這樣的事情會做你的工作。 您需要一個預訂類別,以及一些存儲在AllBookings數組列表中的數據。確保只有預訂對象可以放置在該數組列表中。

但是回到每個循環。

  1. 第一部分(Booking)定義哪些對象類型被放置在 列表,數組或要計算通過什麼。 注意:您也可以將Object而不是Booking,因爲一切都是對象,但我不會建議您這樣做。

  2. 第二個(b)是遍歷它時,它代表 實際元素在你的列表中,該變量的名稱。

  3. 第三和最後一部分(AllBookings)是你的集合或數組,其中,所有對象都放在

的Java文檔有關,每個循環:

+0

通用語法不在這裏 - 通用參數「」應該遵循類型而不是變量名稱。 (除此之外,變量通常以較低的駱駝情況命名,所以'allBookings'將是一個更傳統和更易讀的名字。) – 2012-03-13 13:18:30

+0

@AndrzejDoyle非常感謝你!我糾正了答案。自從我寫了一些Java代碼已經很長時間了:-) – 2012-03-13 13:20:39

+0

我現在添加了代碼以查看它是否使它更清晰,並感謝您給予我的東西,其讚賞 – user1081326 2012-03-13 13:34:56

0

你有語法正確的,你只需要在對象的集合(或數組)傳遞給循環:

// bookings is Booking[] or a collection of Booking objects, like List<Booking> 
for (Booking b : bookings) 
{ 
    // do whatever you need to do with b 
} 
0

Type是你的對象類型的名稱:你用來聲明它的東西。例如。預訂。

var是佔位符變量的名稱,它將假定您在集合中循環的每個元素的值。這可以是任何你想要的。

coll是要循環的集合的名稱。聽起來你可能稱之爲B1。

,因此會使用

for (Booking booking : B1){ 
//body 
} 
0

什麼是預訂? foreach循環用於陣列迭代

我假設這是你想要做什麼,可以說訂票類型的數組的String [](我可以編輯我的答案如果是別的東西)

String[] booking = new String[]{"Hello", "How are You", "Goodbye"}; 
for (String s: booking) 
{ 
    System.out.println(s); 
} 
for (int i=0; i < booking.length; i++) 
{ 
    System.out.println(booking[i]); 
} 

產生以下輸出:

Hello 
How are You 
Goodbye 
Hello 
How are You 
Goodbye 
0

如果你有Foo類型的這樣一個集合:

List<Foo> someList = getSomeList(); 

然後循環,你可以這樣做:

for(Foo myFoo : someList){ 
    System.out.println("I have a foo : "+myFoo); 
} 
0

我不完全理解你問在你提到B1段落什麼,似乎什麼你描述不要求循環。

但是一般來說,for-each循環的工作方式與你所描述的一樣。請注意,右手變量被稱爲coll - 這是因爲它需要某種元素的集合(嚴格來說是實現Iterable的東西)。所以如果你有一個List<Booking>,你可以遍歷所有又將在此列表中的預訂量如下:

List<Booking> bookings = ...; // populated somehow, or passed in, whatever 

for (Booking b : bookings) { 
    // Do what you want to b, it will be done in turn to each booking in the list 
    // For example, let's set the hypothetical last updated date to now 
    b.setLastUpdated(new Date()); 
} 

// At this point all bookings in the list have had their lastUpdated set to now 

讓我們回到你所描述的:

這個程序創建一個新的預訂,然後允許用戶要在該預訂的程序中輸入詳細信息,我已將此B1命名。

這聽起來像你有a預訂。你確定你只需要一個預訂循環嗎?循環涉及對一堆不同的對象執行相同的操作;你想循環什麼?