[英]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循環。
第一部分(Booking)
定義了哪個Object-type放在列表,數組或您想要計算的內容中。 注意:您也可以放置Object
而不是Booking
因為一切都是Object,但我不建議您這樣做。
第二個(b)
是變量的名稱,它代表列表中的實際元素,當迭代它時。
第三個也是最后一個部分(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.