簡體   English   中英

For Each Loops和For循環Java

[英]For Each Loops and For Loops Java

我希望能夠像這樣創建一個for循環

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


       } 

    }
}
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陣列列表中的一些數據。 確保只有預訂對象可以放在該陣列列表中。

但回到For each循環。

  1. 第一部分(Booking)定義了哪個Object-type放在列表,數組或您想要計算的內容中。 注意:您也可以放置Object而不是Booking因為一切都是Object,但我不建議您這樣做。

  2. 第二個(b)是變量的名稱,它代表列表中的實際元素,當迭代它時。

  3. 第三個也是最后一個部分(AllBookings)是你的所有物品所在的集合或數組。

For-Each循環的Java文檔:

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

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

Type是對象Type的名稱:用於聲明它的對象。 EG預訂。

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

coll是要循環的集合的名稱。 聽起來好像你叫這個B1。

所以你會用

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

什么是預訂? foreach循環用於Array迭代

我假設這是你想要做的,讓我們說預訂是一個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

如果你有一個類型為Foo的集合,如下所示:

List<Foo> someList = getSomeList();

然后循環你可以做:

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

我不完全理解你在提到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。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM