其他分享
首页 > 其他分享> > 每日作业20210107

每日作业20210107

作者:互联网

在这里插入图片描述

张三买鸡
公鸡五文钱一只,母鸡三文钱一只,小鸡一文钱三只,
用 n 文钱买 m 只鸡, 有多少种购买方案?
输入: 两个正整数n,m
(n<=1000, m<=1000)
输出:
k行数据, 表示有k种方案,
每行三个整数, 分别表示公鸡, 母鸡, 小鸡各买了多少只
样例输入:
100 100
样例输出:
0 25 75
4 18 78
8 11 81
12 4 84

public class Task17 {
	public static void main(String[] args) {
		//如果有结果 返回的应该是数组,所以建立一个集合来存放数组
		List<int[]> list = new ArrayList<>();
		//接收返回值
		list = result(100, 100);
		//返回为null时,是输入参数错误
		if(list == null) {
			System.out.println("你的输入有误");
			//集合长度为0则没有正确的解
		} else if(list.size() == 0) {
			System.out.println("没有正确的解");
		} else {
			for (int[] is : list) {
				//打印解
				System.out.println(Arrays.toString(is));
			}
		}
		
	}
	
	public static List<int[]> result(int n, int m) {
		//创建一个集合来存放结果
		ArrayList<int[]>  list = new ArrayList<int[]>();
		//先判断给的参数是否正确,如果不在取值范围则返回null
		if(n <= 1000 && m <= 1000) {
			//公鸡最大值为n/5
			for(int i = 0; i <= n / 5; i++) {
				//母鸡的最大值为n/3
				for(int j = 0; j <= n / 3; j++) {
					//两个方程相减消去小鸡这个参数,求得成立的条件
					if(14 * i + 8 * j == (3 * n - m)){
						//存放解的数组
						int[] arr = new int[3];
						arr[0] = i;
						arr[1] = j;
						arr[2] = m - i - j;
						list.add(arr);
					} 
				}
			}
			return list;
		} else {
			return null;
		}
	}
}

此种写法为了区分是输入错误还是没有解,设置了当输出错误的时候返回null,没有正确解的时候集合的长度为0
集合长度为0:
声明一个集合,但不赋值,指向一个新建、未初始化的集合对象。则该集合长度为0,但是不为空。

ArrayList<int[]>  list = new ArrayList<int[]>();
//此时集合长度为0

集合为null:
声明一个集合,直接赋值为空。则该集合为null,没有长度,如果调用temp.size()会抛出空指针异常。

ArrayList<int[]>  list = null;

标签:arr,int,作业,每日,list,20210107,集合,null,ArrayList
来源: https://blog.csdn.net/m0_51283856/article/details/112307155