JAVA计算机二级考试第一套

JAVA计算机二级考试题目及答案

这些题目是仅仅是代表我自己的解法

第一套

一、大题01
1、在Test01类的main方法中,补充完整代码,实现从键盘输入一个正整数整数时,求大于零并且小于或等于这个正整数的所有奇数的和,并在控制台输出计算结果。如果输入不是正整数则输出提示。程序运行结果之一如下图所示
2、保存文档。(10分)

import java.util.Scanner;
/** 
 * 从键盘输入一个正整数,求大于零并且小于或等于这个正整数的所有奇数的和,并在控制台输出计算结果。如果输入不是正整数,则输出提示。
 */

public class Test01 {

	public static void main(String[] args) {
		int num = 0;
		int sum = 0;

		System.out.println("请输入一个正整数:"); 
		Scanner sc = new Scanner(System.in);  
		try {
			num = sc.nextInt(); 
			if (num % 1 == 0) {   //  判断输入是否为正整数   -----------2分
				for (int i = 1;i <= num; i++) {//设置遍历统计条件-----2分

					if (i % 2 == 1) {  //判断是否为奇数----------2分
						sum = sum + i;//求和------------2分
					}
				}
				
				System.out.println("大于零并且小于或等于" + num + "的所有奇数的和是:" + sum); 
			} else {
				System.out.println("你输入的不是正整数");
			}
		} catch (Exception e) { //输入异常处理 ----2分  
			System.out.println("你的输入不符合要求,无法计算");
		}
	}
}

二、大题02
补充下面程序接受用户输入的一串字符串,将其转化为全部小写,然后计算26个小写英文字母在字符串中首次出现的位置并输出结果。(15分)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class TestNum1 {
	public static void main(String[] args) throws IOException {
		BufferedReader sc=new BufferedReader(new InputStreamReader(System.in));
		System.out.println("请输入一串字符串");
		String sID= sc.readLine();//接受用户输入 
		sID = sID.toLowerCase();//转成全部小写字母 
		System.out.println("您输入的是:"+sID);
		int index= 0;// 记录位置
		for(int i=0;i<26;i++){
			char c= (char) (97+i);//每一个字母
			index = sID.indexOf(c);// 找出第一次出现位置
			if(index>=0){//判断是否出现
				System.out.println(c+"首次出现的位置为:"+index);
			}else{
				System.out.println(c+"没出现");
			}
		}
	}

}

三、大题03
写一个MyMath类,提供静态函数void fun(int x)对x(一个大于或等于3的正整数,若x小于3将直接退出),判断它是不是一个素数(素数是指除了1和该数本身之外,不能被其它任何整数整除的数。例如,13是素数。因为它不能被2,3,4,…,12整除。)如果是素数则打印出“x是素数”,如果不是则打印“x不是素数”。注意打印结果中x用具体数值取代,例如“13是素数”。在main函数中,调用这个函数计算出结果。(20分)

class MyMath {
	  void fun(int x) { // #1
		int r;// 存放余数
		if (x < 3)
			 return; // #2 小于3 程序退出
		for (int i=2; i<x; i++) {// #3 
			r = x%i;// #4 得到余数
			if ( r == 0) { // #5 余数为零
				System.out.println(x + "不是素数");
				return ;// #6 程序退出
			}
		}
		System.out.println(x + "是素数");

	}
}

public class Test31 {

	public static void main(String[] args) {
		int num=18;
		MyMath my = new MyMath();//利用fun函数计算num是不是素数 #7(3分)
		my.fun(num);
	}

}

四、大题04
1、打开Test10.java按说明和要求补充完成代码。模拟实现用户使用某系统的权限分级管理。 程序包含以下对象:
*interface CanRead 读接口:通过该接口,可具体定义用户的浏览权限
*interface CanWrite 写接口:通过该接口,可具体定义用户的写入权限
*interface CanAlter 改接口:通过该接口,可具体定义用户的修改权限
*class Visitor 访客类,实现读接口,具有浏览特定信息的权限;
*class NormalUser 普通用户类,继承了访客的所有权限,并且实现写接口;
*class Administrator管理员类,继承了普通用户的所有权限,并且实现了改接口。
2、程序运行时,选择输入用户身份,创建对应的用户,在控制台输出相应用户相关信息。若输入指令非法,控制台输出错误提示,并提醒继续输入。
根据运行结果图和提示,补全代码调试通过。程序运行可能结果之一如下图所示:
3、保存类文档。(25分)
在这里插入图片描述

import java.util.InputMismatchException;
import java.util.Scanner;

public class Test10 {
	public static void main(String[] args) {
		Visitor vs = null;  
		boolean flag = true;	
		do {
			Scanner sc = new Scanner(System.in);  
			System.out.println("输入你的身份,1 :代表访客;2:代表普通用户;3:代表管理员");
			try{
			int i = sc.nextInt();
			if (i==1 || i==2 || i==3) {   //判断输入指令是否合法-----3分
				flag = false ; //根据要求设置循环输入开关的状态 ---------------2分
				switch (i) {   //设置分支选择变量-------------------------2分
				case 1:
					vs =  new Visitor();  //根据输入的指令创建相应的对象  -----2分
					break;
				case 2:
					vs = new NormalUser() ;//根据输入的指令创建相应的对象  -----2分
					break;
				case 3:
					vs =  new Administrator();//根据输入的指令创建相应的对象---2分
					break;
				}
				/*以下代码通过父类型输出特定对象的特性信息*/
				System.out.println("你的身份是:"+vs.getType()); //-----2分
				
				/* 以下代码,根据上面已经创建出的具体对象访问该对象的所有权限信息*/
				if (vs instanceof Administrator) {
					Administrator admin = (Administrator) vs; //转换为相对应的对象----2分				
					System.out.println(admin.read());
					System.out.println(admin.write());
					System.out.println(admin.alter());
				} else if (vs instanceof NormalUser) {
					NormalUser nu = (NormalUser) vs;  //转换为相对应的对象------2分					
					System.out.println(nu.read());
					System.out.println(nu.write());
				} else if (vs instanceof Visitor) {					
					System.out.println(	vs.read());  //转换为相对应的对象-------2分
				}
			}else{				
				System.out.println("输入的指令不正确,请重新选择输入!");
			}
			}catch(InputMismatchException ime){				
				System.out.println("输入的指令不正确,请重新选择输入!");
			}finally{
				sc = new Scanner(system.in);		; //io释放资源 -------------------------------------2分
			}
		} while (flag); // 设计一个控制程序是否循环输入的开关变量 ---------------  2分
	}
}

interface CanRead {
	public String read();
}

interface CanWrite {
	public String write();
}

interface CanAlter {
	public String alter();
}

class Visitor implements CanRead {	
	@Override
	public String read() {
		return "具备浏览相关信息权限!";
	}
	public String getType() {
		return "访客!";
	}	
}

class NormalUser extends Visitor implements CanWrite {
	@Override
	public String write() {
		return "具备写入相关信息权限!";
	}
	@Override
	public String getType() {
		return "普通用户!";
	}
}

class Administrator extends NormalUser implements CanAlter {
	@Override
	public String alter() {
		return "具备修改相关信息权限!";
	}
	@Override
	public String getType() {
		return "管理员!";
	}
}

仅代表个人解法

不是标准答案!不是标准答案!不是标准答案!

原题:
链接:https://pan.baidu.com/s/1ncaMFEI7qT71PlKPi2QZhA
提取码:3nuf

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值