public void registerOrder() throws Exception { System.out.println("Please input your order like this: yourname_restaurantIdcode_foodIdcode" + "\n for example:" + "Lucy_0001_01"); while (true) { String str = null; try { str = stdIn.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } StringTokenizer stringTokenizer = new StringTokenizer(str, "_"); String customerName = (String) stringTokenizer.nextElement(); for (Customer customer : customersList) { if (customerName.equals(customer.getName())) { String shopIdcode = (String) stringTokenizer.nextElement(); // shopList.get(resturantName); String foodIdCode = (String) stringTokenizer.nextElement(); Food food = shopList.get(shopIdcode).getFoodList().getFood(foodIdCode); if (food == null) { stdErr.println("Failed in load food. \nmaybe in this resturant doesn't have this food." + "shopid: " + shopIdcode + " foodIdCode: " + foodIdCode); break; }
时间: 2024-03-28 16:36:50 浏览: 14
这是一个 Java 方法,用于注册订单。方法中使用 while 循环来不断读取用户输入的订单信息,直到用户输入有效的订单信息为止。在循环体内,首先使用 System.out.println() 方法提示用户输入订单信息的格式,并使用 System.in.readLine() 方法读取用户输入的订单信息。然后使用 StringTokenizer 类对用户输入的订单信息进行解析,获取订单中的顾客姓名、餐厅 ID 编码、菜品 ID 编码等信息。接着,使用 for-each 循环遍历顾客列表,查找与输入的顾客姓名相匹配的顾客对象。如果找到了匹配的顾客对象,则获取餐厅 ID 编码对应的餐厅对象,并使用餐厅对象的 getFood() 方法获取指定菜品 ID 编码对应的菜品对象。如果菜品对象不存在,则使用 System.err.println() 方法输出错误信息,提示用户检查输入的订单信息是否正确。如果菜品对象存在,则将订单信息保存到订单记录列表中,并使用 System.out.println() 方法提示用户订单注册成功。这个方法的作用是根据用户输入的订单信息,注册一个新的订单,并将订单信息保存到订单记录列表中。
相关问题
public void vipcx() throws Exception{ System.out.println("请输入你要查询的会员名字:"); String name=""; Scanner sc=new Scanner(System.in); name=sc.next(); String sql="select * from vip where name=?"; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.setString(1,name); ResultSet rs=pstmt.executeQuery(); while(rs.next()) { System.out.println(""+rs.getInt("vip_id")+"+"+rs.getString("name")+"+rs.getInt("number")+""); } }哪错了
代码中存在语法错误,正确的代码如下:
```
public void vipcx() throws Exception {
System.out.println("请输入你要查询的会员名字:");
String name="";
Scanner sc=new Scanner(System.in);
name=sc.next();
String sql="select * from vip where name=?";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,name);
ResultSet rs=pstmt.executeQuery();
while(rs.next()) {
System.out.println(""+rs.getInt("vip_id")+"+"+rs.getString("name")+"+"+rs.getInt("number")+"");
}
}
```
在 `System.out.println` 语句中,字符串拼接时,`rs.getInt("number")` 的后面缺少了一个引号。此外,建议在方法中加入异常处理机制,否则代码可能会出现不可控的异常。
class Main { static void procedure() throws IllegalAccessException { System.out.println("inside procedure"); IllegalAccessException("demo"); } public static void main(String args[]) { try { procedure(); } catch ( ) { System.out.println("捕获:" + e); } } }
这段代码有一些问题,比如:
1. 在 `IllegalAccessException` 抛出的地方缺少 `new` 关键字,应该是 `new IllegalAccessException("demo")`。
2. 在 `catch` 块中缺少异常类型,应该是 `catch (IllegalAccessException e)`。
3. 缺少异常处理的代码,应该在 `catch` 块中加入处理异常的代码,比如输出异常信息或者进行其他处理。
改正后的代码如下:
```
class Main {
static void procedure() throws IllegalAccessException {
System.out.println("inside procedure");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
try {
procedure();
} catch (IllegalAccessException e) {
System.out.println("捕获:" + e);
}
}
}
```