题目一:牛牛取快递
题目描述:
牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,请问牛牛总共要支付多少快递费
输入描述:
第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,'y' 表示加急 ,'n' 表示不加急。
作答情况(未通过):
①从键盘输入字符 语法遗忘;
②类型没有进行强制转换;
③不足1kg情况不会正确处理;
代码:
public static void main(String[] args) {Scanner in=new Scanner(System.in);int price=0;float weight=in.nextFloat();char ch=in.next().charAt(0);//只取一个字符if((weight*10)%10==0){//7.0(26r)price=20+((int)weight-1);}else{//7.6(27r) 8.9(28)price=20+(int) weight;}if(ch=='y'){price+=5;}if(ch=='n'){price+=0;}System.out.println(price);}
}
题目二:跳到楼顶的最小花费
题目描述:
给定一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。
输入描述:
自定义一个整数数组 cost
作答情况(已通过):
因为之前做过动态规划类题,这个就会做啦。
代码实现:
public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str=sc.nextLine();String[] arr=str.split(",");int[] cost=new int[arr.length];for(int i=0;i< cost.length;i++){cost[i]=Integer.parseInt(arr[i]);}//假设有3层(n==3),楼顶的下标为3,所以数组大小设置为n+1//dp[i]表示跳到第i层的最小花费int[] dp = new int[cost.length + 1];//下标为0 或者 下标为1 是起跳位置,跳到这两位置不需要支付费用dp[0] = 0;dp[1] = 0;for (int i = 2; i < dp.length; i++) {/* //向上爬一个台阶(这样想,假设你到达楼顶i==n,向后退一个台阶)dp[i]=dp[i-1]+cost[i-1];//向上爬两个台阶(这样想,假设你到达楼顶i==n,向后退两个台阶)dp[i]=dp[i-2]+cost[i-2];*/dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);}//假设有3层(n==3),楼顶的下标为3System.out.println(dp[cost.length]);}
收获:
(1)从键盘中进行不同数据类型的输入
①调用Scanner类:导入Scanner包 ——inport Java.util.Scanner;
②创建Scanner对象:Scanner in=new Scanner(System.in);
③读取不同类型的数据:
(不特殊的)
int a=in.nextInt();float b=in.nextFloat();long c=in.nextLong();short d=in.nextShort();boolean e=in.nextBoolean();double f=in.nextDouble();byte g=in.nextByte();
(特殊的)
//从键盘中输入一个字符char ch=in.next().charAt(0);//从键盘中输入数组①int n=in.nextInt();//多输入了数组长度int[] temp=new int[n];for(int i=0;i<n;i++){temp[i]=in.nextInt();}//从键盘中输入数组②String str=in.next().toString();String[] arr=str.split(",");int[] cost=new int[arr.length];for(int i=0;i< cost.length;i++){cost[i]=Integer.parseInt(arr[i]);}//从键盘中输入一串字符(字符串)String s=in.nextLine();String str=in.next().toString();