java实验报告实验3答案
java程序设计基础(第3版)实验指导答案 第三章

实验10import java.util.*;public class shiyan10{public static void main(String[] args){int a=0,b=0,c=0,max=0;Scanner reader=new Scanner(System.in);System.out.println("从键盘输入第一个整数");a=reader.nextInt();System.out.println("从键盘输入第二个整数");b=reader.nextInt();System.out.println("从键盘输入第三个整数");c=reader.nextInt();if(a>b)max=a;elsemax=b;if(c>max)max=c;System.out.println("最大的数是"+max);}}//在程序中输入三个整数,比较它们的大小,输出最大的数实验11public class shiyan11{public static void main(String[] args){int s=0;for(int i=0;i<100;i++){s=s+i;i++;}System.out.println("1+3+5+···+99="+s);}}//用for循环语句求1+3+5+···+99的值实验12import java.util.*;public class shiyan12{public static void main(String[] args){int a=0,i=1,s=0;Scanner reader=new Scanner(System.in);while(a<50||a>100){System.out.println("从键盘输入一个50~100的整数");a=reader.nextInt();}System.out.println("你输入的数是"+a);while(i<=a){s=s+i;i++;}System.out.println("1+2+3+···+"+a+"="+s);}}//编写从键盘输入一个范围在50~100的整数,如果不正确,则继续输入;然后求1到输入整数的累加实验13public class shiyan13{public static void main(String[]args){int i=100,s=0;do{s=s+i;i--;}while(i>0);System.out.println("100+99+98+···+2+1="+s);}}//用do-while语句求100+99+···+2+1的值实验14import java.util.*;public class shiyan14{public static void main(String[] args)int a=-1;Scanner reader=new Scanner(System.in);System.out.println("从键盘输入0~6的整数");a=reader.nextInt();while(a<0||a>6){System.out.println("输入错误");System.out.println("从键盘输入0~6的整数");a=reader.nextInt();}switch(a){case 0:System.out.println("今天是星期日");break;case 1:System.out.println("今天是星期一");break;case 2:System.out.println("今天是星期二");break;case 3:System.out.println("今天是星期三");break;case 4:System.out.println("今天是星期四");break;case 5:System.out.println("今天是星期五");break;case 6:System.out.println("今天是星期六");break;default:System.out.println("输入错误");break;}}}//让用户通过输入一个0~6的整数,显示今天是xingqijipublic class shiyan15{public static void main(String[] args){for(int i=1;i<10;i++){if(i==6)break;System.out.println(""+i);}System.out.println("\n显示完毕");for(int i=1;i<10;i++){if(i%2==0)continue;System.out.println(""+i);}System.out.println("\n显示完毕");}}//先显示1~5各个整数,然后再显示1~10的各个奇数。
Java程序设计实验指导书(答案)

第Ⅰ部分:实验指导实验1:Java开发环境J2SE一、实验目的(1)学习从网络上下载并安装J2SE开发工具。
(2)学习编写简单的Java Application程序.(3)了解Java源代码、字节码文件,掌握Java程序的编辑、编译和运行过程。
二、实验任务从网络上下载或从CD-ROM直接安装J2SE开发工具,编写简单的Java Application程序,编译并运行这个程序。
三、实验内容1.安装J2SE开发工具Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java 2 SDK,可以从上进行下载。
安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到C:\j2sdk1.4.1_03目录下。
教师通过大屏幕演示J2SE的安装过程,以及在Windows98/2000/2003下环境变量的设置方法。
2.安装J2SE源代码编辑工具Edit Plus教师通过大屏幕演示Edit Plus的安装过程,以及在Windows98/2000/2003操作系统环境下编辑Java 原程序的常用命令的用法。
3.编写并编译、运行一个Java Application程序。
创建一个名为HelloWorldApp的java Application程序,在屏幕上简单的显示一句话"老师,你好!"。
public class HelloWorldApp{public static void main(String[] args){System.out.println("老师,你好!");}}4.编译并运行下面的Java Application程序,写出运行结果。
1:public class MyClass {2:private int day;3:private int month;4:private int year;5:public MyClass() {6:day = 1;7:month = 1;8:year = 1900;9:}10:public MyClass(int d,int m,int y) {11:day = d;12:month = m;13:year = y;14:}15:public void display(){16:System.out.println(day + "-" + month + "-" + year);17:}18:public static void main(String args[ ]) {19:MyClass m1 = new MyClass();20:MyClass m2 = new MyClass(25,12,2001);21:m1.display();22:m2.display();23:}24:}运行结果:1-1-190025-12-2001实验2:Java基本数据类型一、实验目的(1)掌握javadoc文档化工具的使用方法。
Java实验报告(三)

Java实验报告(三)实验(三)类和对象⼀、实验⽬的和要求1.掌握类的构造函数的重载2.深⼊理解类和对象3.学习NetBeans中UML项⽬的创建类并⽣成相应代码的⽅法⼆、实验内容和原理设计⼀个复数类,能够完成复数之间的基本运算,重写⽅法toString(),使其能输出此复数(形式为:实部 + 虚部i)。
要求设计的复数类必须有三个构造函数,分别为⽆参数、1个参数和2个参数的构造函数,完成的基本运算包括两个复数的加、减、乘、除法和共轭复数。
三、实验环境1.硬件环境:2.软件环境:JDK1.5四、算法描述及实验步骤1.算法描述(可以⽤类图、流程图、伪代码或源程序描述)2.实验步骤●创建⼀个UML项⽬,并设计类Complex如下图●创建⼀个Java应⽤项⽬●把UML项⽬中的Complex⾃动⽣成代码到Java应⽤项⽬中●实现Complex类中的⽅法●进⾏编译●进⾏测试,使⽤的测试⽤例:输⼊:预期输出:…代码:Complex类:package studentTaskThree;/*** 复数类* @author Administrator**/public class Complex{/*** 定义类变量,复数的实部realPart和虚部ImaginaryPart */ private double realPart;private double imaginaryPart;/*** ⽆参构造⽅法*/public Complex(){super();* 不含实部复数的构造⽅法* @param realPart*/public Complex(double imaginaryPart){super();this.imaginaryPart = imaginaryPart;}/*** 含有实部参数和虚部参数的构造⽅法* @param realPart* @param imaginaryPart*/public Complex(double realPart, double imaginaryPart) { super();this.realPart = realPart;this.imaginaryPart = imaginaryPart;}/*** 读取实部* @return*/public double getRealPart(){return realPart;}/*** 设置实部* @param realPart*/public void setRealPart(double realPart){this.realPart = realPart;* 读取虚部* @return*/public double getImaginaryPart(){return imaginaryPart;}/*** 设置虚部* @param imaginaryPart*/public void setImaginaryPart(double imaginaryPart){this.imaginaryPart = imaginaryPart;}/*** 复数相加⽅法* @param complex* @return*/public Complex plus(Complex complex){return new Complex(this.realPart + complex.realPart, this.imaginaryPart + complex.imaginaryPart); }/*** 复数相减⽅法* @param complex* @return*/public Complex minus(Complex complex){return new Complex(this.realPart - complex.realPart, this.imaginaryPart - complex.imaginaryPart); }* @param complex* @return*/public Complex times(Complex complex){return new Complex(complex.realPart * this.realPart - complex.imaginaryPart * this.imaginaryPart,complex.realPart * this.imaginaryPart +complex.imaginaryPart * this.realPart);}/*** 复数相除⽅法* @param complex* @return*/public Complex divideBy(Complex complex){double dividedPart = (this.realPart * this.realPart +this.imaginaryPart * this.imaginaryPart);return new Complex((complex.realPart * this.imaginaryPart + complex.imaginaryPart * this.realPart) / dividedPart, (complex.imaginaryPart* this.realPart- complex.realPart * this.imaginaryPart) / dividedPart);}/*** 求共轭复数⽅法* @return*/public Complex conjugate(){return new Complex(this.getRealPart(),-this.getImaginaryPart());}/*** 重写toString⽅法,实现复数的输出格式*/String str = "";// 实部为零,虚部不为零if (this.realPart == 0 && this.imaginaryPart != 0){str += this.getImaginaryPart() + "i";}// 实部不为零,虚部为零else if (this.realPart != 0 && this.imaginaryPart == 0){str += this.getRealPart();}// 实部、虚部都不为零else if (this.realPart != 0 && this.imaginaryPart != 0){str += this.getRealPart() + (this.getImaginaryPart() > 0 ? "+": "") + this.getImaginaryPart() + "i"; }return str;}}测试类:Complexdemopackage studentTaskThree;/*** 测试类* @author Administrator**/public class ComplexDemo{/*** main⽅法,测试程序⼊⼝点* @param args*/public static void main(String[] args)* 创建两个完整复数对象*/Complex com1 = new Complex(1, 2);Complex com2 = new Complex(2, 1);// 创建⽆参复数Complex com3 = new Complex();// 创建只有虚部的复数Complex com4 = new Complex(5);// 输出对象System.out.println("复数1:" + com1);System.out.println("复数2:" + com2);System.out.println("复数3:" + com3);System.out.println("复数4:" + com4);// 输出相加结果System.out.println("复数相加:(" + com1 + ") + (" + com2 + ") = " + (com1.plus(com2)).toString()); // 输出相减结果System.out.println("复数相减:(" + com1 + ") - (" + com2 + ") = "+ (com1.minus(com2)).toString());// 输出相乘结果System.out.println("复数相乘:(" + com1 + ") * (" + com2 + ") = " + com1.times(com2));// 输出相除结果System.out.println("复数相除:(" + com1 + ") / (" + com2 + ") = " + com1.divideBy(com2));// 输出所求的共轭复数System.out.println("共轭复数: " + com1 + " 共轭复数是:" +com1.conjugate());}}实际测试类:import javax.swing.JOptionPane;/*** 实际测试类* @author Administrator**//*** 测试类⼊⼝点* @param args*/public static void main(String[] args){// 创建两个复数对象Complex com1 = new Complex();Complex com2 = new Complex();// 输⼊数据com1.setRealPart(Double.parseDouble(JOptionPane.showInputDialog("请输⼊复数1的实部:")));com1.setImaginaryPart(Double.parseDouble(JOptionPane.showInputDia log("请输⼊复数1的虚部:")));com2.setRealPart(Double.parseDouble(JOptionPane.showInputDialog("请输⼊复数2的实部:")));com2.setImaginaryPart(Double.parseDouble(JOptionPane.showInputDia log("请输⼊复数2的虚部:")));// 输出各个⽅法的测试结果JOptionPane.showMessageDialog(null, "复数应⽤测试如下:\n" +"复数1:" + com1 + "\n" +"复数2:" + com2 + "\n" +"复数相加:" + com1.plus(com2) + "\n" +"复数相加:" + com1.minus(com2) + "\n" +"复数相乘:" + com1.times(com2) + "\n" +"复数相除:" + com1.divideBy(com2) + "\n" +"共轭复数:" + com1 + " 共轭复数是:" +com1.conjugate());}}五、调试过程1.编译过程没有错误。
Java SE实验报告3

实验三:Swing中的事件处理班级:姓名:学号:实验目的:通过使用Swing中的事件监听和处理机制,建立GUI应用程序,相应鼠标和键盘操作,理解事件处理机制,掌握事件处理方法。
实验内容:建立GUI程序;响应鼠标事件;相应键盘事件;响应窗口事件;以实现监听接口、匿名类等多种形式实现事件处理。
实验步骤:1.实验步骤01.参考教材完成响应鼠标事件、相应键盘事件、响应窗口事件02.实现监听接口、匿名类等多种形式实现事件处理等2.实验过程01.响应鼠标事件实验核心内容分析1)截图(1)程序,继承了顶层容器Jframe(布局)、实现了ActionListener接口(监听鼠标动作)2)截图(2)程序,继承了顶层容器Jframe(布局)、实现了MouseMotionListener接口(实现paint()、mouseMoved()、mouseDragged()方法)实验截图(1)鼠标点击“点击”按钮,文本框内点击次数加1(2)MouserMotionListener接口,实现画板操作02.键盘控制事件实验核心内容分析1)程序继承了顶层容器Jframe(布局)、实现了KeyListener接口(通过keyReleased()、keyPressed()、keyTyped()方法监听键盘动作,实现响应的操作)实验截图实现KeyListener接口,完成键盘操作03.键盘控制事件实验核心内容分析2)程序继承顶层容器Jframe(布局)、实现ItemListener接口(通过itemStateChanged()方法监听组合框状态的改变,实现响应)实验截图组合框联动(ItemListener)04.计算器实验核心内容分析3)通过顶层容器Jframe实现GUI布局,通过实现ActionListener接口、继承KeyAdapter监听鼠标、键盘事件实验源代码package exp;import java.awt.BorderLayout;import java.awt.GridLayout;import javax.swing.*;import java.awt.event.*;public class Calculator extends JFrame {// 声明一个文本栏控件,用于显示计算结果private JTextField txtResult;private JPanel p;// 定义一个字符串数组,将计算器中按钮的文字都放在该数组中private String name[] = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "=", "/" };// 声明一个按钮数组,该数组的长度以字符串数组的长度为准private JButton button[] = new JButton[name.length];// 定义一个存放计算结果的变量,初始为0private double result = 0;// 存放最后一个操作符,初始为“=”private String lastCommand = "=";// 标识是否是开始private boolean start = true;public Calculator() {super("计算器");// 实例化文本栏控件txtResult = new JTextField(20);//设置文本框不是焦点状态txtResult.setFocusable(false);// 将文本栏控件放置在窗体框架的上方(北部)this.add(txtResult, BorderLayout.NORTH);// 实例化面板对象,同时设置此面板布局为4行4列的网格布局p = new JPanel(new GridLayout(4, 4));// 循环实例化按钮对象数组// 实例化按钮监听对象ButtonAction ba = new ButtonAction();// 实例化键盘监听对象KeyAction ka = new KeyAction();for (int i = 0; i < button.length; i++) {button[i] = new JButton(name[i]);// 注册监听button[i].addActionListener(ba);button[i].addKeyListener(ka);p.add(button[i]);}this.add(p, BorderLayout.CENTER);this.setSize(200, 150);this.setLocation(100, 100);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}// 计算public void calculate(double x) {if (lastCommand.equals("+"))result += x;else if (lastCommand.equals("-"))result -= x;else if (lastCommand.equals("*"))result *= x;else if (lastCommand.equals("/"))result /= x;else if (lastCommand.equals("="))result = x;// 将结果显示在文本栏txtResult.setText("" + result);}// 点击按钮监听private class ButtonAction implements ActionListener {public void actionPerformed(ActionEvent e) {String input = e.getActionCommand();// 点击操作符号按钮if (input.equals("+") || input.equals("-") || input.equals("*") || input.equals("/") || input.equals("=")) {if (start) {if (input.equals("-")) {txtResult.setText(input);start = false;} elselastCommand = input;} else {calculate(Double.parseDouble(txtResult.getText()));lastCommand = input;start = true;}} else {if (start) {txtResult.setText("");start = false;}txtResult.setText(txtResult.getText() + input);}}}// 键盘监听private class KeyAction extends KeyAdapter {public void keyTyped(KeyEvent e) {char key = e.getKeyChar();// 敲击的键盘是数字if (key == '0' || key == '1' || key == '2' || key == '3'|| key == '4' || key == '5' || key == '6' || key == '7'|| key == '8' || key == '9' || key == '9') {if (start) {txtResult.setText("");start = false;}txtResult.setText(txtResult.getText() + key);}// 敲击的键盘是操作符号else if (key == '+' || key == '-' || key == '*' || key == '/'|| key == '=') {if (start) {if (key == '-') {txtResult.setText(String.valueOf(key));start = false;} elselastCommand = String.valueOf(key);} else {calculate(Double.parseDouble(txtResult.getText()));lastCommand = String.valueOf(key);start = true;}}}}public static void main(String[] args) {Calculator f = new Calculator();f.setVisible(true);}}实验截图实验体会:。
实习课题03答案

第一章 Java概述实习课题3 : 巩固知识实习目的:1、编写Application程序2、编写Applet程序实验要求:1、编写一个Application程序,显示你的姓名、学号和联系电话。
2、编写一个显示“Java真的很简单”的Applet程序,并分别利用网页浏览器窗口及Appletviewer窗口来显示运行结果。
实验答案:编写一个Application程序,显示你的姓名、学号和联系电话。
参考答案:Student.javapublic class Student {public static void main(String[] args) {System.out.println("Name : 张三");System.out.println("No : 123456");System.out.println("Tel : 12345678900");}}编写一个显示“Java真的很简单”的Applet程序,并分别利用网页浏览器窗口及Appletviewer窗口来显示运行结果。
参考答案:1、Hello.javaimport java.awt.*;import java.applet.*;public class Hello extends Applet{String str;public void init(){str="Java真的很简单";}public void paint(Graphics g){g.drawString(str, 25, 25); //str为要绘制的String,25,25为x,y坐标}}2、Hello.html"<APPLET CODE="Hello.class" WIDTH=300 HEIGHT=250 IGNORE=""> </APPLET>"。
Java上机实验报告(3)

Java上机实验报告(3)任务简要描述⼀、⼀、任务简要描述1、集合类的使⽤举例Collection接⼝ Collection是最基本的集合接⼝,⼀个Collection代表⼀组Object,即Collection的元素(Elements)。
⼀些 Collection允许相同的元素⽽另⼀些不⾏。
⼀些能排序⽽另⼀些不⾏。
Java SDK不提供直接继承⾃Collection的类,Java SDK提供的类都是继承⾃Collection的“⼦接⼝”如List和Set。
所有实现Collection接⼝的类都必须提供两个标准的构造函数:⽆参数的构造函数⽤于创建⼀个空的Collection,有⼀个 Collection参数的构造函数⽤于创建⼀个新的Collection,这个新的Collection与传⼊的Collection有相同的元素。
后⼀个构造函数允许⽤户复制⼀个Collection。
如何遍历Collection中的每⼀个元素?不论Collection的实际类型如何,它都⽀持⼀个iterator()的⽅法,该⽅法返回⼀个迭代⼦,使⽤该迭代⼦即可逐⼀访问Collection中每⼀个元素。
典型的⽤法如下:1 Iterator it = collection.iterator(); // 获得⼀个迭代⼦2 while(it.hasNext()) {3 Object obj = it.next(); // 得到下⼀个元素 由Collection接⼝派⽣的两个接⼝是List和Set。
List接⼝ List是有序的Collection,使⽤此接⼝能够精确的控制每个元素插⼊的位置。
⽤户能够使⽤索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下⾯要提到的Set不同,List允许有相同的元素。
除了具有Collection接⼝必备的iterator()⽅法外,List还提供⼀个listIterator()⽅法,返回⼀个 ListIterator接⼝,和标准的Iterator接⼝相⽐,ListIterator多了⼀些add()之类的⽅法,允许添加,删除,设定元素,还能向前或向后遍历。
Java实验三实验报告1

淮海工学院计算机工程学院实验报告书课程名:《Java语言实验与课程设计指导》题目:实验3——深入面向对象编程班级:学号:姓名:实验题目:1.定义一个学生类,定义一个大学生类和小学生类,这两个类是学生类的子类;定义一个选课接口,由大学生类实现该接口,定义一个年龄异常处理,当小学生年龄小于7岁时,弹出异常。
2.定义一个银行卡类,定义一个信用卡类和普通银行卡类,这两个类是银行卡类的子类;定义一个透支的接口,信用卡可以透支,普通银行卡不可以透支。
定义一个取款异常和透支异常,当普通银行卡取款超过银行卡余额时,弹出“取款异常”;当信用卡透支超过2万元时弹出“透支异常”。
实验代码:题1源代码:import java.awt.*;class student{String number,name,sex,bj;int age;student(String xuehao,String xingming,String xingbie,int nianling,String banji){number=xuehao;name=xingming;sex=xingbie;age=nianling;bj=banji;}}interface xuanke{abstract void select(String s);}interface illegal{abstract void illegal(int s);}class primary extends student implements illegal{String xx;primary(String xuehao,String xingming,String xingbie,int nianling,String banji,String xiaoxue){super(xuehao,xingming,xingbie,nianling,banji);}public void illegal(int s){age=s;if(age<7)System.out.println("\n出错~学生"+name+" 的年龄过小!");}}class college extends student implements xuanke{String dx,xk;college(String xuehao,String xingming,String xingbie,int nianling,String banji,String daxue){super(xuehao,xingming,xingbie,nianling,banji);dx=daxue;}public void select(String s){xk=s;}}public class test_1{public static void main(String args[]){primary p1=new primary("1","张三","男",13,"五(1)班","ZZZ小学");System.out.println(p1.number+" "++" "+p1.sex+" "+p1.age+" "+p1.bj+" "+p1.xx);p1.illegal(p1.age);primary p2=new primary("\n2","小红","女",6,"一(1)班","YYY小学");System.out.println(p2.number+" "++" "+p2.sex+" "+p2.age+" "+p2.bj+" "+p2.xx);p2.illegal(p2.age);college c1=new college("3","小茗","女",20,"软件112","XXX大学");c1.select("现代密码学");System.out.print("\n"+c1.number+" "++" "+c1.sex+" "+c1.age+" "+c1.bj+" "+c1.dx+" "+c1.xk+"\n");}}实验结果:题2源代码:import java.util.*;class bankcard{String kh,name;double yue;bankcard(String kahao,String yezhu,double shengyu) {kh=kahao;name=yezhu;yue=shengyu;}}interface touzhi{abstract void tz(double s);abstract void tzye(double s);abstract void illegal();}interface qkillegal{abstract void illegal();}class common extends bankcard implements qkillegalcommon(String kahao,String yezhu,double shengyu){super(kahao,yezhu,shengyu);}public void warning(){System.out.println("普通银行卡不可透支!");}public void illegal(){System.out.println("取款超额!");}}class xinyongka extends bankcard implements touzhi{double tzye;xinyongka(String kahao,String yezhu,double shengyu){super(kahao,yezhu,shengyu);}public void tz(double s){tzye=s;}public void tzye(double s){double t=20000+yue-s;if(s>yue)System.out.println(t);}public void illegal(){System.out.println("透支超额!");}}public class test_3{public static void main(String args[]){common c1=new common("62226200240001916658","张三",1200.00);System.out.println("卡号:"+c1.kh+"业主:"++"余额:"+c1.yue);System.out.println("请输入取款金额:");Scanner s1=new Scanner(System.in);double b=s1.nextDouble();if(b<c1.yue){double c=c1.yue-b;System.out.println("银行卡余额为:"+c);}elsec1.illegal();System.out.println("\n\n");xinyongka x1=new xinyongka("62236200243008615559","李四",500.00);System.out.println("卡号:"+x1.kh+"业主:"++"余额:"+x1.yue);System.out.println("信用卡可透支!透支金额为20000元!");System.out.println("请输入要取款金额:");Scanner s2=new Scanner(System.in);double a=s2.nextDouble();if(a<=x1.yue){double d=x1.yue-a;System.out.println("银行卡余额为:"+d);}else if(a>x1.yue&&a<=(20000+x1.yue)){System.out.println("透支余额剩余:");x1.tzye(a);}elsex1.illegal();}}实验结果:普通银行卡类:输入普通银行卡取款金额若输入金额小于余额则若大于余额则信用卡类:输入取款金额,若输入金额小于余额则若输入金额大于余额小于透支金额与余额之和,则若大于透支金额与余额之和,则。
java 实验三 控制语句 实验报告

if(b/20!=0){System.out.println(b/20+"张2角");b-=(b/20)*20;}
if(b/10!=0){System.out.println(b/10+"张1角");b-=(b/10)*10;}
System.out.println(e);
}
}
}
}
问题:
(1)程序运行结果怎样,出现了哪些异常?
程序运行结果截图如下:
该程序运行出现了除数不能为0,数组越界,还有空指针放回等异常。
(2)分析异常是怎样抛出、捕获和处理的?
抛出异常:在方法的运行过程中,如果发生了异常,则该方法生成一个代表该异常的对象并把它交给运行时系统,运行时系统便寻找相应的代码来处理这一异常。
答:可以。
其执行结果如下:
2.语句:“JOptionPane.showMessageDialog(null,"猜对了!这个数就是"+realNumber);”为何要放在while循环语句之后?放在while语句的循环体中合理吗?
请将回答写在析并运行下面程序,并回答下面问题,最后完善异常处理程序。
(1)存在元、角、分不同币值,在计算时建议统一转换成分,比如5元就是500分,2元就是200分;
(2)用几个数组,按顺序存储可以使用的转换后的币值,如200,100,2;还有对应币值的名字,如两元,一元,二分;还有对应的单位,如元,元,枚;
(3)怎么才算最小找零方案,张数(枚数)最小就意味着尽量用大币值去找零,所以把找零的总额转成分后,依次除以大币值,得出的商就是该币值的找零张数(枚数),而得出的模(也就是余数)就是继续要找零的,继续除以下一个较小的币值,。。。依次类推,知道最后不再有余数,说明找零成功,把依次得到的商对应相对应的币值输出即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三熟悉常用java工具包并运用编程实验目的:本实验旨在巩固同学们对上课所讲java.util工具包中Collection,List,Set,Map加深理解,对其用法编程有一个更加深入的理解,为同学们以后的能够用Java进行独立地编写桌面程序打下一定的基础。
实验内容:本实验的内容为:用Collection,List,Set,Map来存储数据,并进行排序,任何用Iterator,ListIterator或者Enumeration来打印其结果(按顺序和降序排列打印)。
共分为四部分部分(前三部分必做,如果选第四个,前三个可以不做。
):(1)按顺序把1,10,5,7,6,2,9,20,14,存入到List中(注:允许自己自定义任何数),并对其进行排序,打印其升序和降序排列的结果。
然后再向List中位置为第四位插入数35看看会有啥结果?再向List中插入字符串“ddy”,试猜想排序是否会出错?然后看看运行结果是啥?程序:import java.util.*;public class SY3{public SY3(){List list=new ArrayList();list.add(1);list.add(10);list.add(5);list.add(7);list.add(6);list.add(2);list.add(9);list.add(20);list.add(14);list.add(35);list.add("ddy");System.out.println("原序列:");for(int i=0;i<=list.size()-1;i++){System.out.println(list.get(i));}System.out.println("新序列");for(int i=0;i<=list.size()-1;i++){Collections.sort(list);Collections.reverse(list);System.out.println(list.get(i));}}public static void main(String[] args){new SY3();}}结果如图(2)按顺序把下面一组数([1,2] [3,4] [2,2] [6,4] [5,2] [4,4])存放到Map中(注:允许自己自定义任何数),并按key 和value的值进行排序。
如果再向Map中加入[3,6] 看看排序结果有啥变化?并说出其理由。
程序代码:package SY3;import java.util.*;public class Main{List li;Map m1;Enumeration em;Iterator<Map.Entry<Integer,Integer>> it;Iterator lit;Collections ce;Map.Entry<String,Integer> m4;List<Map.Entry<Integer,Integer>> lm;public Main(){li=new ArrayList();li.add(7);li.add(2);li.add(6);li.add(3);li.add(1);li.add(8);li.add(9);ce.sort(li);ce.reverse(li);lit=li.iterator();while(lit.hasNext()){System.out.println(lit.next());}m1=new HashMap();m1.put(1,2);m1.put(3,4);m1.put(2,2);m1.put(6,4);m1.put(5,2);m1.put(4,4);m1.put(3,6);lm=new ArrayList<Map.Entry<Integer,Integer>>(m1.entrySet());ce.sort(lm, new Comparator<Map.Entry<Integer,Integer>>(){public int compare(Map.Entry<Integer,Integer> o1,Map.Entry<Integer,Integer> o2) {return o1.getValue()-o2.getValue();}}it=lm.iterator();while(it.hasNext()){System.out.println(it.next().toString());}}public static void main(String[] args){// TODO code application logic herenew Main();}}运行结果:结果说明:先按括号中的第二个值升序进行排序,如果出现同值,则按子一个值升序排列(3)Map中的key值和value可不可以对不同类型的值或者对象同时混用进行排序?请对自己Map 编程进行修改并测试key和value排序结果是否会出错?(例如:字符串,双进度,Integer,Object,List,Set)。
程序代码package Sy3;import java.util.*;public class HashMapSort{public staticvoid main(String [] args){HashMap<String,Integer> hm = new HashMap<String,Integer>();hm.put("a",5);hm.put("c",7);hm.put("d",8);hm.put("v",0);hm.put("m",3);hm.put("u",10);hm.put("e",2);hm.put("g",6);Set<String> set = hm.keySet();//取出所有键TreeSet<String> ts =new TreeSet<String>(); System.out.println("键的原序:");for(String s:set){System.out.print(s+" ");ts.add(s);}System.out.println(" ");System.out.println("按键排序后的顺序:"); for(Strings:ts){ System.out.print(s+" "); }System.out.println(" ");Collection<Integer> cl= hm.values();//取出所有值TreeSet<Integer> ts1 =new TreeSet<Integer>(); System.out.println("值的原序:");for(Integer s:cl){System.out.print(s+" ");ts1.add(s);}System.out.println(" ");System.out.println("按值排序后的顺序:");for(Integers:ts1){ System.out.print(s+" "); }}}运行结果:实验步骤:创建一个java项目,命名为experiment3。
(如何创建项目参考《实验一》的项目创建方法。
)1、在Experiment3的项目下建立一个主类,自己命名。
构建类似如下的窗体。
实验帮助:1.对于前三部分实验:a)List排序可以用Collections.Sort() 和Collection.Reverse()方法。
打印可以用Enumeration 或者ListIterator等。
b)用import java.util. *; 导入全部工具类或者一个一个一个地导入。
c)Map中比较可以用Comparator,其参考代码如下List<Map.Entry<String,Integer>> list_data;list_data=new ArrayList<Map.Entry<String,Integer>>(map.entrySet());Collections.sort(list_data, new Comparator<Map.Entry<String, Integer>>(){public int compare(Map.Entry<String, Integer> o1, Map.Entry<String,Integer> o2){return (o2.getValue() - o1.getValue());}});2.对于第四部分实验:(1)用map结合Comparator排序为好,结果可以存入到List中。
排序代码类似如下:List<Map.Entry<String,Integer>> list_data;list_data=new ArrayList<Map.Entry<String,Integer>>(map.entrySet());Collections.sort(list_data, new Comparator<Map.Entry<String, Integer>>(){public int compare(Map.Entry<String, Integer> o1, Map.Entry<String,Integer> o2){return (o2.getValue() - o1.getValue());}});(2)对于贡献度和依存度排序也可以用Map,其中key值为C1,。
C7. value 为贡献度和依存度。
排序中要注意余数处理。
????例如:7个客户分为4个等级,不可能每个等级为1.75个客户。