XTU-JAVA课后练习答案四

《面向对象程序设计(Java)》
实验报告

一、实验类型
验证性实验
二、实验目的

1、成员变量:

声明、定义使用和封装

2、成员方法:

☆ 设计、调用

3、OOP 编程的思想

  1. 理解主类的编写
  2. 调用其他类的方法
  3. 在编程过程中体会 oop 的思想(并熟悉定义类、创建对象、对象
    属性的使用)

三、实验内容及步骤
(1) 参考《面向对象程序设计(java)实验指导书-李枚毅.doc》
(2) 题目从上机练习系统中选取
(3) 每道题都需要实验过程和结果的屏幕截图

第1题(上机练习系统第64题 )
填写代码,算术运算异常处理(Try/Catch-finally)例子(10分)
此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 填代码;
  4. 提交代码,注意题号要一致。

有如下程序,是异常处理(Try/Catch)的例子,完成的功能为捕获异常,并进行处理(输出错误信息)。请将下面程序的【代码】替换为Java代码,使程序运行正确。
文件Main.java

public class Main {
public static void main(String[] args) {
【代码1】{
int i = 0;
i = 3 / i;// 将产生算术运算异常。
} catch (ArithmeticException e)// 找到了匹配的异常,执行该catch块。
{
System.out.println(“发生了ArithmeticException异常”);
} 【代码2】 (ArrayIndexOutOfBoundsException e)// 不是匹配的异常,则不会再捕获
// 异常,如果发生数组下标(索引)超出范围所产生的异常,将执行该catch块。
{
System.out.println(“发生了ArrayIndexOutOfBoundsException异常”);
} catch (Exception e)
// 前两个catch块均无法捕获try块中发生的异常时,才会执行该catch块。
{
System.out.println(“发生了异常”);
} 【代码3】 {
{
System.out.println(“执行Finally”);
}
}
}
}
解答:

public class Main {
public static void main(String[] args) {
try{
int i = 0;
i = 3 / i;// 将产生算术运算异常。
} catch (ArithmeticException e)// 找到了匹配的异常,执行该catch块。
{
System.out.println(“发生了ArithmeticException异常”);
}catch(ArrayIndexOutOfBoundsException e)// 不是匹配的异常,则不会再捕获
// 异常,如果发生数组下标(索引)超出范围所产生的异常,将执行该catch块。
{
System.out.println(“发生了ArrayIndexOutOfBoundsException异常”);
} catch (Exception e)
// 前两个catch块均无法捕获try块中发生的异常时,才会执行该catch块。
{
System.out.println(“发生了异常”);
}finally {
{
System.out.println(“执行Finally”);
}
}
}
}

第2题(上机练习系统第65题 )
填写代码,算术运算异常处理(Try/Catch)例子(10分)
此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 填代码;
  4. 提交代码,注意题号要一致。

有如下程序,是异常处理(Try/Catch)的例子,完成的功能为捕获异常,并进行处理(输出错误信息)。请将下面程序的【代码】替换为Java代码,使程序运行正确。

文件Main.java
import java.util.;
public class Main {
public static void main(String[] args) {
// 键盘输入数n作为分母,做除法
Scanner in = new Scanner(System.in);
int y = 0;
int n = 0;
【代码1】 {
n = in.nextInt();
y = (3 / n);
} catch (【代码2】 e) {//输入数据不匹配
// TODO Auto-generated catch block
e.printStackTrace();//显示堆栈数据
System.out.println(“请输入整数!”);
} catch (ArithmeticException e) {
// TODO Auto-generated catch block
System.out.println(“请输入非零整数!”);
} 【代码3】 (Exception e) {
// TODO Auto-generated catch block
System.out.println(“出现了未知情况!”);
}
System.out.println(“程序正常结束!”);
}
}
解答:
import java.util.
;
public class Main {
public static void main(String[] args) {
// 键盘输入数n作为分母,做除法
Scanner in = new Scanner(System.in);
int y = 0;
int n = 0;
try{
n = in.nextInt();
y = (3 / n);
} catch (InputMismatchException e) {//输入数据不匹配
// TODO Auto-generated catch block
e.printStackTrace();//显示堆栈数据
System.out.println(“请输入整数!”);
} catch (ArithmeticException e) {
// TODO Auto-generated catch block
System.out.println(“请输入非零整数!”);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(“出现了未知情况!”);
}
System.out.println(“程序正常结束!”);
}
}

第3题(上机练习系统第66题 )
填写代码,自定义异常处理类(继承Exception)例子(10分)
此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 填代码;
  4. 提交代码,注意题号要一致。

有如下程序,是自定义异常处理类(继承Exception)的例子,完成的功能为键盘输入字符串作为异常处理提示信息。请将下面程序的【代码】替换为Java代码,使程序运行正确。

文件Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String st=in.nextLine();// 键盘输入字符串作为提示信息
try {
【代码1】 new MyException(st);
} catch (MyException e) {
// TODO Auto-generated catch block
System.out.println(st);
}
}
}
// 子类,继承Exception
class MyException extends 【代码2】 {
public MyException() {
super();
// TODO Auto-generated constructor stub
}
public 【代码3】(String s) {
super(s);
// TODO Auto-generated constructor stub
}
}
解答:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String st=in.nextLine();// 键盘输入字符串作为提示信息
try {
throw new MyException(st);
} catch (MyException e) {
// TODO Auto-generated catch block
System.out.println(st);
}
}
}
// 子类,继承Exception
class MyException extends Exception{
public MyException() {
super();
// TODO Auto-generated constructor stub
}
public MyException(String s) {
super(s);
// TODO Auto-generated constructor stub
}
}

第4题(上机练习系统第67题 )
填写代码,ArrayList类的方法(10分)
以下程序是有关ArrayList类的方法的例子,请将下面程序的【代码】替换为Java程序代码,使程序运行正确。
文件Main.java

import java.util.*;
public class Main {
public static void main(String[] args) {
Show aShow =new Show();//显示元素
ArrayList【代码1】 list1=new ArrayList();
【代码2】.ensureCapacity(200);
Scanner scanner=new Scanner(System.in);
list1.add(“abc”);
list1.add(“123”);
int i=scanner.nextInt();
list1.【代码3】(Integer.toString(i));//转换为字符串再加入
aShow.showList(list1);
Object[] ob=list1.【代码4】();//转换为字符串
String st1=(String)ob[0];//取出下标为0的元素
System.out.println(“下标为0的元素为:”+st1);
String st2=list1.【代码5】(2);//取出下标为2的元素
System.out.println(“下标为2的元素为:”+st2);
list1.【代码6】;//删除下标为1的元素
aShow.showList(list1);
ArrayList arrayList1 = new ArrayList();
arrayList1.add(0, “The” );
arrayList1.add( 1, “fox” );
arrayList1.add( 1, “jumps” );
arrayList1.【代码7】(1,list1);//将list1加入arrayList1
aShow.showList(arrayList1);
}
}
//显示元素的类
class Show{
public void showList(ArrayList s) {
Iterator iter=s.iterator();
while(iter.hasNext()){
String st=iter.next();
System.out.print(st+" ");
}
System.out.println();
}
}

import java.util.*;
public class Main {
public static void main(String[] args) {
Show aShow =new Show();//显示元素
ArrayList list1=new ArrayList();
list1.ensureCapacity(200);
Scanner scanner=new Scanner(System.in);
list1.add(“abc”);
list1.add(“123”);
int i=scanner.nextInt();
list1.add(Integer.toString(i));//转换为字符串再加入
aShow.showList(list1);
Object[] ob=list1.toArray();//转换为字符串
String st1=(String)ob[0];//取出下标为0的元素
System.out.println(“下标为0的元素为:”+st1);
String st2=list1.get(2);//取出下标为2的元素
System.out.println(“下标为2的元素为:”+st2);
list1.remove(1);//删除下标为1的元素
aShow.showList(list1);
ArrayList arrayList1 = new ArrayList();
arrayList1.add(0, “The” );
arrayList1.add( 1, “fox” );
arrayList1.add( 1, “jumps” );
arrayList1.addAll(1,list1);//将list1加入arrayList1
aShow.showList(arrayList1);
}
}
//显示元素的类
class Show{
public void showList(ArrayList s) {
Iterator iter=s.iterator();
while(iter.hasNext()){
String st=iter.next();
System.out.print(st+" ");
}
System.out.println();
}
}

第5题(上机练习系统第68题 )
填写代码,使用ArrayList类进行排序(10分)
以下程序是使用ArrayList类对键盘输入的整数数组进行排序,请将下面程序的【代码】替换为Java程序代码,使程序运行正确。
文件Main.java

import java.util.;
public class Main {
public static void main(String[] args) {
Show aShow =new Show();//显示元素
ArrayList<【代码1】> list1=new ArrayList();
Scanner in=new Scanner(System.in);
int n=in.nextInt();
list1.ensureCapacity(n);
while(n–【代码2】0){//输入n个数
int k=in.nextInt();
list1.add(k);//加入元素
}
【代码3】.sort(list1);//排序
aShow.showList(list1);
}
}
//显示元素的类
class Show{
public void showList(ArrayList list1) {
Iterator<【代码4】> iter=list1.iterator();
while(iter.hasNext()){
int st=iter.next();
System.out.print(st+" ");
}
System.out.println();
}
}
import java.util.
;

public class Main {
public static void main(String[] args) {
Show aShow = new Show();// 显示元素
ArrayList list1 = new ArrayList();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
list1.ensureCapacity(n);
while (n-- != 0) {// 输入n个数
int k = in.nextInt();
list1.add(k);// 加入元素
}
Collections.sort(list1);// 排序
aShow.showList(list1);
}
}

// 显示元素的类
class Show {
public void showList(ArrayList list1) {
Iterator iter = list1.iterator();
while (iter.hasNext()) {
int st = iter.next();
System.out.print(st + " ");
}
System.out.println();
}
}

第6题(上机练习系统第69题 )
编写部分代码. 求散列码之和(arraylist).(10分)
下面程序通过arraylist存储数据,然后运用object中的方法计算散列码之和,但类HashCodeSum中部分代码缺失.请编写程序代码,使程序运行正确。
此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 将题中代码复制到Main.java中;
  4. 按要求编写代码,请注意已经有的代码不能修改,特别是class Main类中的代码不能修改;
  5. 提交代码,注意题号要一致。

文件Main.java

import java.util.;
public class Main {
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
int n=reader.nextInt();
ArrayList a=new ArrayList();
for(int i=0;i<n;i++)
a.add(reader.nextInt());
HashCodeSum x=new HashCodeSum();
System.out.println(x.sum(a));//显示结果
System.out.println(“The Main class is end.”);
}
}
class HashCodeSum{
int sum(ArrayList a){
int sum=0;
/
-----请编写代码-----*/

/-----编写的代码结束-----/
return (sum);
}
}
import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner reader=new Scanner(System.in);

int n=reader.nextInt();

ArrayList a=new ArrayList();

for(int i=0;i<n;i++)

a.add(reader.nextInt());

HashCodeSum x=new HashCodeSum();

System.out.println(x.sum(a));//显示结果

    System.out.println("The Main class is end.");

}

}

class HashCodeSum{

int sum(ArrayList a){

int sum=0;

/-----请编写代码-----/
for(int i = 0;i < a.size();i++)
{
sum+=a.get(i);
}

/-----编写的代码结束-----/

return (sum);

}

}

第7题(上机练习系统第70题 )
填写代码,功能是通过线程输出字符串(10分)
此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 填代码;
  4. 提交代码,注意题号要一致。

有如下程序,是线程的例子,完成的功能为输出字符串。请将下面程序的【代码】替换为Java代码,使程序运行正确。
文件Main.java

import java.util.;
public class Main extends 【代码1】 {
static String s;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
s = scanner.nextLine();
【代码2】 t = new Main();
t.start();
}
public void 【代码3】() {
System.out.println(s);
}
}
import java.util.
;

public class Main extends Thread {

static String s;

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

s = scanner.nextLine();

Main t = new Main();

t.start();

}

public void run() {

System.out.println(s);
}
}

第8题(上机练习系统第71题 )
填写代码,功能是实现Runnable并输出字符串(10分)
此题的上机步骤是:

  1. 建立一个Java项目,名称可以按题号取名;
  2. 建立一个类, 类的名称为Main。这一点非常重要;
  3. 填代码;
  4. 提交代码,注意题号要一致。

有如下程序,是线程的例子,完成的功能为输出字符串。请将下面程序的【代码】替换为Java代码,使程序运行正确。
文件Main.java

import java.util.;
public class Main 【代码1】 Runnable{
static String s;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
s = scanner.nextLine();
【代码2】 t=new Thread(new 【代码3】);
t.【代码4】;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(s);
}
}
import java.util.
;

public class Main implements Runnable{

static String s;

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

s = scanner.nextLine();

Thread t=new Thread(new Main());

t.start();

}

@Override

public void run() {

// TODO Auto-generated method stub

System.out.println(s);

}

}

四、实验总结
要求
(1) 对实验结果进行分析,并且给一个评估
(2) 经验总结,心得体会(如果有的话)

猜你喜欢

转载自blog.csdn.net/xuanyulevel6/article/details/126068380