英文:
Print out the data in batches as insertion order
问题
我有以下代码用于打印所有已登记乘客的详细信息:
for (int counter = 0; counter < a; counter++) {
System.out.println("==============================");
System.out.println("Name: " + PassengerName[counter]);
System.out.println("ID Number: " + PassengerIDNum[counter]);
System.out.println("Mobile Number: " + PassengerMobNum[counter]);
System.out.println("Temperature in °C: " + PassengerTemp[counter]);
}
这是输出结果:
==============================
Name: 乘客A
ID Number: 12345
Mobile Number: 23456
Temperature in °C: 36.5
==============================
Name: 乘客B
ID Number: 34567
Mobile Number: 45678
Temperature in °C: 35.4
==============================
Name: PassengerForTesla
ID Number: 5678
Mobile Number: 6789
Temperature in °C: 35.6
==============================
这些输入被分成了批次。
乘客A
和 乘客B
属于第一批输入,PassengerForTesla
属于第二批输入。
由于我使用了数组,无法按批次打印它们。如何保留批次信息的方法是什么。
英文:
I have this code to printout all the registered passenger's details:
for(int counter = 0; counter < a; counter++) {
System.out.println("==============================");
System.out.println("Name: " + PassengerName0+网站访问量);
System.out.println("ID Number: " + PassengerIDNum0+网站访问量);
System.out.println("Mobile Number: " + PassengerMobNum0+网站访问量);
System.out.println("Temperature in °C: " + PassengerTemp0+网站访问量);
}
This is the output:
==============================
Name: PassengerA
ID Number: 12345
Mobile Number: 23456
Temperature in °C: 36.5
==============================
Name: PassengerB
ID Number: 34567
Mobile Number: 45678
Temperature in °C: 35.4
==============================
Name: PassengerForTesla
ID Number: 5678
Mobile Number: 6789
Temperature in °C: 35.6
==============================
These inputs are grouped into batches.
PassengerA
and PassengerB
belong to the first batch of input and PassengerForTesla
belongs to the second batch input.
As I use Array I can not print those by batches. What's the way to preserve batch information.
答案1
得分: 0
我认为最好的做法是创建一个类似这样的乘客类:
class Passenger {
private String name;
private int idNumber;
private String mobileNumber;
private int temperature;
private int inputNumber;
public Passenger(String name, int idNumber, String mobileNumber, int temperature, int inputNumber) {
this.name = name;
// ...
}
public int getInputNumber() {
return inputNumber;
}
public void print() {
System.out.println(name);
System.out.println(idNumber);
// ...
}
}
这应该能解决你的问题。现在你可以有一个乘客列表(List of Passengers),并且只打印出具有特定 inputNumber 的乘客。另外为了方便起见,我会在乘客类中加入一个 print() 方法。
因此,你的 for 循环会类似于这样:
for (Passenger p : myPassengerList) {
if (p.getInputNumber() == 我想打印的数字) p.print();
}
之所以使用列表和乘客对象而不是多个数组,是因为将属于同一组的数据存储在同一个类中更容易操作,而且从总体上来说,这是一种更好的编程风格。
希望对你有所帮助。
英文:
I think it would be best if you create a passenger class like this:
class Passenger {
private string name;
private int idNumber;
private string mobileNumber;
private int temperature;
private int inputNumber;
public Passenger(string name, int idNumber, string mobileNumer, int temperature, int inputNumber) {
this.name = name;
....
}
public int getInputNumber() { return inputNumber;}
public void print(){
System.println(name);
System.println(idNumber);
....
}
}
This should solve your problems. You can now have a List of Passengers and print out only the ones with a certain inputNumber. Also for convenience sake I'd put a print() method in the passenger class.
So your for() loop would look something like this:
for (Passenger p: myPassengerList) {
if(p.getInputNumber() == THE_NUMBER_I_WANT_TO_BE_PRINTED) p.print();
}
The reason for using a list and passenger objects instead of multiple arrays is because storing data which belongs together in the same class is a lot easier to work with and in general it's just a better style of programming.
Hope this was helpful
答案2
得分: 0
你可以相应地构建主方法逻辑,这可以作为基本块
import java.util.ArrayList;
import java.util.List;
public class Main {
static List<List<Passenger>> allPassengers = new ArrayList<List<Passenger>>();
public static void main(String[] args) {
Passenger PassengerA = new Passenger("PassengerA", 12345, "23456", 36.5F);
Passenger PassengerB = new Passenger("PassengerB", 34567, "45678", 35.4F);
Passenger PassengerForTesla = new Passenger("PassengerForTesla", 5678, "6789", 35.6F);
List<Passenger> firstSet = new ArrayList<Passenger>();
firstSet.add(PassengerA);
firstSet.add(PassengerB);
allPassengers.add(firstSet);
List<Passenger> secondSet = new ArrayList<Passenger>();
secondSet.add(PassengerForTesla);
allPassengers.add(secondSet);
for (int i = 0; i < allPassengers.size(); i++) {
System.out.println("****print " + (i + 1) + " set passengers****");
print(allPassengers.get(i));
}
}
private static void print(List<Passenger> passengers) {
for (Passenger passenger : passengers) {
System.out.println(passenger + "\n");
}
}
}
public class Passenger {
/*
* Name: PassengerA ID Number: 12345 Mobile Number: 23456 Temperature in °C: 36.5
*/
String name;
int id;
String mobile;
float temp;
public Passenger(String name, int id, String mobile, float temp) {
super();
this.name = name;
this.id = id;
this.mobile = mobile;
this.temp = temp;
}
@Override
public String toString() {
return "==============================\nName: " + name + "\nID Number: " + id
+ "\nMobile Number: " + mobile + "\nTemperature in °C: " + temp;
}
}
输出将会是:
****print 1 set passengers****
==============================
Name: PassengerA
ID Number: 12345
Mobile Number: 23456
Temperature in °C: 36.5
==============================
Name: PassengerB
ID Number: 34567
Mobile Number: 45678
Temperature in °C: 35.4
****print 2 set passengers****
==============================
Name: PassengerForTesla
ID Number: 5678
Mobile Number: 6789
Temperature in °C: 35.6
英文:
You can construct main method logic accordingly, this could be the basic block
import java.util.ArrayList;
import java.util.List;
public class Main {
static List<List<Passenger>> allPassengers = new ArrayList<List<Passenger>>();
public static void main(String[] args) {
Passenger PassengerA = new Passenger("PassengerA", 12345, "23456", 36.5F);
Passenger PassengerB = new Passenger("PassengerB", 34567, "45678", 35.4F);
Passenger PassengerForTesla = new Passenger("PassengerForTesla", 5678, "6789", 35.6F);
List<Passenger> firstSet = new ArrayList<Passenger>();
firstSet.add(PassengerA);
firstSet.add(PassengerB);
allPassengers.add(firstSet);
List<Passenger> secondSet = new ArrayList<Passenger>();
secondSet.add(PassengerForTesla);
allPassengers.add(secondSet);
for (int i = 0; i < allPassengers.size(); i++) {
System.out.println("****print " + (i + 1) + " set passengers****");
print(allPassengers.get(i));
}
}
private static void print(List<Passenger> passengers) {
for (Passenger passenger : passengers) {
System.out.println(passenger + "\n");
}
}
}
and the Passenger class is
public class Passenger {
/*
* Name: PassengerA ID Number: 12345 Mobile Number: 23456 Temperature in °C: 36.5
*/
String name;
int id;
String mobile;
float temp;
public Passenger(String name, int id, String mobile, float temp) {
super();
this.name = name;
this.id = id;
this.mobile = mobile;
this.temp = temp;
}
@Override
public String toString() {
return "==============================" + "\nName: " + name + "\nID Number: " + id
+ "\nMobile Number: " + mobile + "\nTemperature in °C: " + temp;
}
}
out will be
****print 1 set passengers****
==============================
Name: PassengerA
ID Number: 12345
Mobile Number: 23456
Temperature in °C: 36.5
==============================
Name: PassengerB
ID Number: 34567
Mobile Number: 45678
Temperature in °C: 35.4
****print 2 set passengers****
==============================
Name: PassengerForTesla
ID Number: 5678
Mobile Number: 6789
Temperature in °C: 35.6
答案3
得分: 0
是的,可以将一个数组存储在另一个数组中。这被称为二维数组,看起来像这样:String[][] myArray = new String[someValue][someValue]
尽管这是可能的,但我强烈建议不要这样做。更好的方法是使用列表。以下代码与使用二维数组相比可能会显得有点复杂,但在我看来,这是编写此代码的最佳和唯一正确的方法。
List<Ride> rides = new ArrayList<Ride>();
public class Ride {
private List<Passenger> passengers;
private VehicleInformation vehicleInformation;
//您需要添加构造函数和getter和setter方法
}
这样,您就有了一个包含乘客列表和一辆车的“Ride”对象(经验法则是:如果您的数据结构听起来像是某人会说的句子,那么它可能是好的)。
现在,如果您想知道谁乘坐了车辆XYZ,您可以遍历“rides”列表,选择所有搭乘一个车辆的乘客并打印乘客信息。这是您将来很可能要做的事情,使用数组将会更加困难。
使用列表,您可以这样做:
List<Passenger> passengersOfCarXYZ = new ArrayList<Passenger>();
for(Ride r: rides){
if(r.getVehicle().getName().equals("XYZ")) passengersOfCarXYZ.add(r.getPassengers());
}
这样就可以得到所有乘坐该车辆的乘客。比这更简单的方法几乎没有了。
对于这个任务使用数组是可能的,但这就是糟糕编程的定义哈哈。
英文:
I dislike posting 2 answers but I can't comment under @Java Newbie's answer (pls someone just give me an upvote or smth, I can only comment with 50+ reputation) so here you go:
Yes, storing an Array inside an Array is possible. It's called a 2D Array and looks like this: String[][] myArray = new String[someValue][someValue]
Although this is possible, I would very much advise against it. It is a lot better to use Lists. The following code might seem a little complex compared to using a 2D-Array but it is in my opinion the best and only proper way to write this code
List<Ride> rides = new ArrayList<Ride>();
public class Ride {
private List<Passenger> passengers;
private VehicleInformation vehicleInformation;
//You need to add a constructor and getters and setters
}
This way you have a Ride which contains a List of passengers and one car (rule of thumb: if your data structure sounds like a sentence someone would say then it's probably good).
Now if you want to know who rode with vehicle XYZ then you can go through the rides
List, select all rides with one vehicle and print the passenger informations. This is something you most likely will want to do in the future and it will be a lot harder to do with arrays.
With lists you can go
List<Passenger> passengersOfCarXYZ = new ArrayList<Passenger>();
for(Ride r: rides){
if(r.getVehicle().getName().equals("XYZ")) passengersOfCarXYZ.add(r.getPassengers());
}
and have all the passengers of a car. It doesn't get much simpler than this.
Using arrays for this is possible but it's the definition of bad coding haha
专注分享java语言的经验与见解,让所有开发者获益!
评论