Для каждого цикла и для цикла Java - PullRequest
1 голос
/ 13 марта 2012

Я хочу создать цикл 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


       } 

    }
}

Ответы [ 6 ]

3 голосов
/ 13 марта 2012
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 для циклов For-Each:

0 голосов
/ 13 марта 2012

Я не совсем понимаю, что вы спрашиваете в параграфе, где вы упоминаете 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.

Похоже, у вас есть бронирование. Вы уверены, что вам нужен цикл только для одного бронирования? Цикл включает в себя выполнение одних и тех же действий с кучей разных объектов; что вы хотите зациклить?

0 голосов
/ 13 марта 2012

Если у вас есть коллекция типа Foo, например:

List<Foo> someList = getSomeList();

Затем для цикла вы можете сделать:

for(Foo myFoo : someList){
    System.out.println("I have a foo : "+myFoo);
}
0 голосов
/ 13 марта 2012

Что такое бронирование?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 голосов
/ 13 марта 2012

Type - это имя типа вашего объекта: то, что вы бы использовали для его объявления. НАПРИМЕР. Бронирование.

var - это имя переменной-заполнителя, которая будет принимать значение каждого элемента, который вы перебираете в коллекции. Это может быть что угодно.

coll - это название коллекции, которую вы хотите зациклить. Похоже, вы назвали это B1.

Так что вы бы использовали

for (Booking booking : B1){
//body
}
0 голосов
/ 13 марта 2012

Вы правильно поняли синтаксис, вам просто нужно передать коллекцию (или массив) объектов в цикл:

// bookings is Booking[] or a collection of Booking objects, like List<Booking>
for (Booking b : bookings)
{
    // do whatever you need to do with b
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...