求帮我修改一下这个类的代码注释 ,有乱码的注释都修改一下,在一个代码块下写出这个代码块的作用
package org.aeroplane;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Client {
private String flightName = null;//航班名称
private int row = 0; // 多少排座位
private int rowLength = 0; // 每排座位数
private Flight flight = null;// 航班类
private String cmdString = null; // 当前输入的命令
private BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
/**
* 程序入口
* @param args
*/
public static void main(String[] args)
{
new Client().commandShell(); // commandShell
}
/**
* 命令提示语
*/
private void commandShell() {
System.out.println("\n\n================================");
System.out.println(" Command Shell V3.01 ");
System.out.println(" type 'exit' command to exit.");
// 死循环的方式来控制程序循环执行
while (true) {
// 调用该方法获取输入的命令
readCommand();
// 解析输入的命令
processCommand();
}
}
/**
* 输入提示语
*/
private void readCommand() {
if (flightName == null) {
System.out.println("*********************************************");
System.out.println("Please Create The Flight Data First!");
System.out
.println("Use command: create flight_name rows rowLenght <CR>");
System.out
.println("*********************************************\n\n\n");
}
System.out.print("\nCOMMAND>");
try {
// 从键盘输入一行命令
cmdString = br.readLine().trim();
} catch (IOException e) {
System.out.println(" command error! ");
cmdString = null;
}
}
/**
* 解析命令中的内容,根据第一个字符串来解析执行哪个功能
*/
private void processCommand() {
String[] cmds;
String cmd;
if (cmdString != null) {
cmds = command(cmdString);
if (cmds != null){
//获取命令行中第一个命令内容
cmd = cmds[0].toLowerCase();
if (cmd.equals("create")) {
if (flightName == null)
createCommand(cmds);
else {
System.out.println("Create Error:can't handle more flights!");
}
} else if (cmd.equals("reserve")) {
if (flightName != null)
reserveCommand(cmds);
} else if (cmd.equals("cancel")) {
if (flightName != null)
cancelCommand(cmds);
} else if (cmd.equals("list")) {
if (flightName != null)
listCommand(cmds);
} else if (cmd.equals("exit")) {
System.out.println("Thanks. See you later!");
System.exit(0);
} else {
//输入的第一个命令不满足上面的if条件就会执行到这里
System.out.println(" Bad command ! ");
cmdString = null;
}
}
}
}
/**
* 解析命令行输入的内容,将其分割成字符串数组
* @param cmdStr
* @return
*/
private String[] command(String cmdStr) {
int cc = 0;
String[] cmd;
StringTokenizer st = new StringTokenizer(cmdStr);
if ((cc = st.countTokens()) == 0)
return null;
cmd = new String[cc];
for (int i = 0; i < cc; i++)
cmd[i] = st.nextToken();
return cmd;
}
/**
* 将字符串转为对应的int类型
* @param valstr
* @return
*/
private int readInt(String valstr) {
int val = 0;
try {
val = Integer.parseInt(valstr);
} catch (Exception e) {
val = Integer.MIN_VALUE;
}
return val;
}
/**
* 创建航班功能,根据输入的命令,解析命令中的内容来创建航班信息
* 该方法用于解析并创建一个航班对象。
* 它接受一个字符串数组作为参数,该数组包含了创建航班所需的信息,
* 包括航班名称、座位行数和每行座位数。如果参数数量不正确,将输出错误信息。
* 如果参数正确,将尝试创建一个航班对象,并输出创建结果。
* 如果创建失败,将输出错误信息。最终,该方法将返回一个航班对象。
* @param cmds
*/
private void createCommand(String[] cmds) {
if (cmds.length != 4) {
System.out.println("create command error!");
}else {
flightName = cmds[1];
row = readInt(cmds[2]);
rowLength = readInt(cmds[3]);
if (row <= 0 || rowLength <= 0) {
System.out.println("create command parameters error!");
flightName = null;
row = 0;
rowLength = 0;
} else {
try {
flight = new Flight(flightName, row, rowLength);
System.out.println("create Flight OK!");
} catch (Exception e) {
System.out.println(e);
flight = null;
flightName = null;
row = 0;
rowLength = 0;
}
}
}
}
/**
* 预定航班座位功能
* 首先检查命令参数的数量是否正确,然后将乘客姓名存储在一个字符串数组中。
* 接下来,它调用航班对象的reserve方法来预订座位,并将返回的预订号存储在一个整数数组中。
* 最后,它输出每个乘客的预订号,或者如果没有连续的座位可用,则输出相应的错误消息。
* @param cmds
*/
private void reserveCommand(String[] cmds) {
if (cmds.length <= 1) {
System.out.println("reserve command error!");
return;
}
String[] names = new String[cmds.length - 1];
for (int i = 0; i < names.length; i++)
names[i] = new String(cmds[i + 1]);
int[] bn = flight.reserve(names);
if (bn[0] != -1) {
for (int i = 0; i < bn.length; i++)
System.out.println(names[i] + "'s Booking Number is:" + bn[i]);
} else
System.out.println("No Such Sequential Seats Now!");
}
/**
* 取消预定功能
* 首先检查命令格式是否正确,然后读取预订号并检查其是否有效。
* 然后调用航班对象的cancel方法取消预订,并根据返回值输出相应的提示信息。
* @param cmds
*/
private void cancelCommand(String[] cmds) {
if (cmds.length != 2) {
System.out.println("\ncancel command format error!");
return;
}
int bookingNumber = readInt(cmds[1]);
if (bookingNumber <= 0) {
System.out.println("\ncancel command parameter error!");
return;
}
boolean state = flight.cancel(bookingNumber);
if (state)
System.out.println(" Your seat has been cancelled! ");
else
System.out.println("The seat has not been reserved!");
}
/**
* 展示航班列表功能
* 列出当前航班上已经被预订的座位信息,包括乘客姓名、预订号、座位行号和座位位置。
* 如果当前没有任何座位被预订,则输出提示信息“Now no seat is occupied!”。
* 如果命令格式错误,则输出错误提示信息。
* @param cmds
*/
private void listCommand(String[] cmds) {
if (cmds.length != 1) {
System.out.println("\nlist command format error!");
return;
}
Passenger[] passengerlist = flight.getPassengerList();
int flag = 0;
System.out.println("Name Booking Number Row Seat Position ");
System.out.println("---------------------------------------------------------");
if (passengerlist == null || passengerlist.length <= 0)
System.out.println("Now no seat is occupied!");
else {
flag = 0;
for (int b = 0; b < passengerlist.length; b++) {
if (passengerlist[b] != null) {
flag = 1;
System.out
.println(formatStr(passengerlist[b].getName())
+ formatStr(""
+ passengerlist[b]
.getBookingNumber())
+ formatStr("" + passengerlist[b].getRow())
+ formatStr(""
+ passengerlist[b]
.getSeatPosition()));
}
}
if (flag == 0)
System.out.println("Now no seat is occupied!");
}
}
/**
* 将输入的字符串s格式化为长度为16的字符串,如果s的长度小于16,
* 则在其后面添加空格使其长度为16。该方法返回格式化后的字符串。
* @param s
* @return
*/
private String formatStr(String s) {
for (int i = 0; i < 16 - s.trim().length(); i++)
s += ' ';
return s;
}
}
你把你这代码块中的?处理下,是不是乱码了,设置utf-8
建议贴出源码,这个图片太大了,格式也不准确,不方便查看。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!