Java实验2 -- 查车票

前言

  • 时间:2020.3.24
  • 内容:查车票
  • 备注:代码里放了一些小注释,尽量写的能看懂了。。其实中间出来很多小问题,低级错误也在学习群里被大佬教育了一番。。实话说,思考加写代码几分钟,结果debug几小时,真的是“试错性”的学习,相信以后会越来越熟练的叭~奥力给!
  • 另:2020.3.28修改 将输出结果调整成题目要求的样子。将avaiSeat改成存放各个站点现可容纳的乘客数的avaiSeats[]数组,将原本单纯存放零一判断该组买票要求是否同过的isOk[]数组 改成当次买票需求时剩余可容纳的乘客数量。

题目

在这里插入图片描述

效果图

在这里插入图片描述

代码

import java.util.Scanner;
public class Main{
 public static void main(String a[]){
  Scanner scan = new Scanner(System.in);
  while(scan.hasNext()){
   
   //N:all stations'num
   //S:all seats'num
   //allNames:all stations'name
   //avaiSeat[..]: available seats'num ..now
   int N = scan.nextInt(),S = scan.nextInt();
   int[] avaiSeats = new int[N];
   String[] allNames = new String[N];
   
   //input stations'name
   for(int i=0; i<N; i++){
    allNames[i] = scan.next();
    if(i==N-1) break;
    avaiSeats[i] = S;   
   }
 
   //M:orders'num
   //isOK[..]: .. order is OK
   int M = scan.nextInt(),bookSeat;
   int[] isOk = new int[M];
   String[] upNames = new String[M];
   String[] downNames = new String[M];
   
   for(int i=0; i<M; i++){
    upNames[i] = scan.next();
    downNames[i] = scan.next();
    bookSeat = scan.nextInt();
    //check and do number M is Yes or No
    for(int j=0; j<N; j++){
     //go on if the name is upName
     if(upNames[i].equals(allNames[j]) && avaiSeats[j] >= bookSeat){
      avaiSeats[j] -= bookSeat;
      for(int k=j+1; k<N; k++){
       avaiSeats[k] -= bookSeat;
       //if the name is downName, stop minus↑ and plus now↓
       if(downNames[i].equals(allNames[k])){
        avaiSeats[k] += bookSeat;
        isOk[i] = avaiSeats[j] + bookSeat;        
        break;
       }
       //to check if middle avaiSeats <0
       if(avaiSeats[k]<0) 
        break;
      }
     }     
    }
   }
   for(int i=0; i<N; i++){
    if(isOk[i]>0)
     System.out.println(isOk[i] + " YES");
    else
     System.out.println(isOk[i] + " NO");
   }
  }
 }
}

试错

有关equals和==的混淆

  • equal的用法和双等不是一样的。equal是判断数值是否相等,相等返回True,否则返回False;==是判断地址是否相等,相等则返回1,否则返回0。
    在这里插入图片描述

有关循环

  • 这个后来查出来是思考问题,把01背包问题设置成了站点,其实应该设置为位置数的。
    在这里插入图片描述
发布了19 篇原创文章 · 获赞 0 · 访问量 1991

猜你喜欢

转载自blog.csdn.net/hyidol/article/details/105084259