1,MobilePhone.java

import java.util.*;
public class MobilePhone {
	public static void entrance() {
		Scanner sc=new Scanner(System.in);
		
		int act=sc.nextInt();   //输入的指令数字
		int s=sc.nextInt();		//矩阵大小s
		int a[][]=new int[s][s];
		for(int i=0;i<s;i++)  //初始化矩阵为0,不过好像java定义一个矩阵后自动赋值为0
		{
			for(int j=0;j<s;j++)
			{
				a[i][j]=0;
			}
		}
		
		while(sc.hasNextInt())
		{
			int act2=sc.nextInt();
			if(act2==1)   //act2=1,更新位置上的值
			{
				int x=sc.nextInt();
				int y=sc.nextInt();
				int A=sc.nextInt();
				a[x][y]+=A;
				
			}else if(act2==2)//act2=2,查询活跃手机 数之和,并输出结果
			{
				int L=sc.nextInt();
				int B=sc.nextInt();
				int R=sc.nextInt();
				int T=sc.nextInt();
				int sum=0;
				for(int i=L;i<=R;i++)
				{
					for(int j=B;j<=T;j++)
					{
						sum+=a[i][j];
					}
				}
				System.out.println(sum);
			}else if(act2==3)
			{
				break;
			}
		}
	}
}

2,MobilePhoneTest1.java

import static org.junit.Assert.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.PrintStream;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class MobilePhoneTest1 {
	String sep;
	MobilePhone mp;
	PrintStream console = null;
	ByteArrayInputStream in = null;
	ByteArrayOutputStream out = null;
	InputStream input = null;

	@Before
	public void setUp() throws Exception {
		mp = new MobilePhone();
		out = new ByteArrayOutputStream();
		input = System.in;
		console = System.out;
		System.setOut(new PrintStream(out));
		sep = System.getProperty("line.separator");
	}

	@After
	public void tearDown() throws Exception {
		System.setIn(input);
		out.close();
		System.setOut(console);
	}
	
	@Test(timeout=4000)
	public void test1() {
		in = new ByteArrayInputStream(("0 4" + sep + "1 1 2 3" + sep +"2 0 0 2 2" + sep + "1 1 1 2" + sep + "1 1 2 -1" + sep + "2 1 1 2 3" + sep +"3").getBytes());
		System.setIn(in);
		mp.entrance();
		String ans = out.toString();
		assertEquals("3" + sep + "4"+sep, ans);
	}
	
	@Test(timeout=4000)
	public void test2() {
		in = new ByteArrayInputStream(("0 9" + sep + "1 2 5 55" + sep +"2 0 3 5 7"  + sep + "1 3 3 77" + sep + "2 0 0 6 5" + sep +"3").getBytes());
		System.setIn(in);
		mp.entrance();
		String ans = out.toString();
		assertEquals("55" + sep + "132"+sep, ans);
	}
	
	@Test(timeout=4000)
	public void test3() {
		in = new ByteArrayInputStream(("0 110" + sep + "1 77 66 233" + sep +"2 0 0 0 0" + sep + "1 11 22 112" + sep + "1 11 22 112" + sep + "1 3 5 -17" + sep + "2 21 34 5 9" + sep +"3").getBytes());
		System.setIn(in);
		mp.entrance();
		String ans = out.toString();
		assertEquals("0" + sep + "224"+sep, ans);
	}
	
	@Test(timeout=4000)
	public void test4() {
		in = new ByteArrayInputStream(("0 255" + sep + "1 128 64 196" + sep +"2 167 173 47 53" + sep + "2 133 247 150 232"  + sep + "2 152 167 201 37" + sep +"3").getBytes());
		System.setIn(in);
		mp.entrance();
		String ans = out.toString();
		assertEquals("196" + sep + "0" + sep+ "0" + sep, ans);
	}
	
	@Test(timeout=4000)
	public void test5() {
		in = new ByteArrayInputStream(("0 777" + sep + "1 7 7 77" + sep +"2 7 7 7 7" + sep + "1 6 6 -66" + sep + "1 111 111 111" + sep + "2 17 27 37 47" + sep + "2 57 67 77 87" + sep + "2 97 107 127 137" + sep +"3").getBytes());
		System.setIn(in);
		mp.entrance();
		String ans = out.toString();
		assertEquals("77" + sep + "0" + sep + "0" + sep + "111" + sep, ans);
	}
}

 

注:本来以为机试会和以上给的两道练习题(1.Bank, 2.MobilePhone)难度差不多,结果我错了,我以为的只是我以为。第一道面向对象题和给的系统练习题相比,复杂多了,细节也更多,例如判断小数点后面有没有超过两位数, 判断输入的是否为纯字母,如果输入的中文或者其他符号,需要抛出异常,使输出的数字为百分数的形式等等。

一共有四个类

1,商品Project.java,实现设置商品信息,设置商品价格、折扣、名称

2,订单子项OrderItem.java

2,订单Order.java,实现新增订单、打印全部销售记录、获取金额最大的订单

3,商店Shop.java,实现获取商品信息、上架、下架、出售、更新

4,商店老板ShopKeeper.java

Project.java—>Order.java(orders、items、orderitems)—>Shop.java—>ShopKeeper.java

其中有的测试样例一直不过,显示输出的name为null等,最后才明白问题出在哪,是因为在构造函数中为Product赋值商品名称、商品价格、商品折扣时(this.name=setName()),这个赋值用的是一个函数,所以在这个赋值函数setName里,最后一定要进行赋值,忘记加上则就是会一直提醒输出的结果为空,样例一直不会通过。。。。蠢啊蠢,做题时一定要一步步的仔细分析,一点都不能有遗漏。

 

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐