北大《Java》编程练习答案第五课
北大青鸟 使用Java理解逻辑程序课后答案 二单元 第五题
package com;import java.util.*;;//第一步public class Nine {public static void main(String[]args){Scanner input = new Scanner(System.in);//第二步double num = 0;//申明并存储本金变量double st = 0;//存储一年的本息double nd = 0;//存储两年的本息double rd = 0;//存储三年的本息double forth = 0;//存储五年的本息//获取本金System.out.print("请输入本金:");num = input.nextInt();System.out.println("\n本金为:" + num);//计算一年的本息st = num+(num*2.25/100)*1;System.out.println("存取一年后的本息是:" + st);//计算二年的本息nd =num+ (num*2.7/100)*2;System.out.println("\n存取两年后的本息是:" + nd);//计算三年的本息rd = num+(num * 3.24/100)*3;System.out.println("\n存取三年后的本息是:" + rd);//计算五年的本息forth = num+(num*3.6/100)*5;System.out.println("\n存取五年后的本息是:" + forth);}}。
Java程序设计_北京大学中国大学mooc课后章节答案期末考试题库2023年
Java程序设计_北京大学中国大学mooc课后章节答案期末考试题库2023年1.Java不直接使用指针。
答案:正确2.可以使用jar来打包程序。
答案:正确3.字符串连接运算符其实是用append来实现的。
答案:正确4.break及continue后面可以跟一个语句标号。
答案:正确5.增强的for语句可以方便地遍历数组。
答案:正确6.数组元素都会隐式初始化。
答案:正确7.如果没有定义任何构造方法,系统会自动产生一个构造方法。
答案:正确8.方法重载是多态(polymorphism)的一种方式。
答案:正确9.Java中的继承是通过extends关键字来实现的。
答案:正确10.如果没有extends子句,则该类默认为ng.Object的子类。
答案:正确11.使用super访问父类的域和方法。
答案:正确12.在构造方法中,使用super()时,必须放在第一句。
答案:正确13.子类对象实例可以被视为其父类的一个对象。
答案:正确14.同一包中的各个类,默认情况下可互相访问。
答案:正确15.final所修饰的变量,是只读量。
答案:正确16.在定义final局部变量时,也必须且只能赋值一次。
答案:正确17.在接口中定义的常量具有public, static, final的属性。
答案:正确18.虚方法调用是由对象实例的类型来动态决定的。
答案:正确19.在构造方法中,如果没有this及super,则编译器自动加上super()。
答案:正确20.实例初始化,先于构造方法{}中的语句执行。
答案:正确21.getCause()可以得到异常的内部原因。
答案:正确22.JavaSE的源代码是开放的,我们可以阅读。
答案:正确23.任何类都可以覆盖toString()方法。
答案:正确24.字符串的+运算,实际表示StringBuffer、StringBuiler的append运算。
答案:正确25.SimpleDateFormat类可以用来解析日期字符串。
《Java程序设计》教材第五章练习题答案
习题一、选择题1. 面向对象程序设计的基本特征是(BCD)。
(多选)A.抽象B.封装C.继承D.多态2.下面关于类的说法正确的是(ACD)。
(多选)A.类是Java 语言中的一种复合数据类型。
B.类中包含数据变量和方法。
C.类是对所有具有一定共性的对象的抽象。
D.Java 语言的类只支持单继承。
上机指导1.设计银行项目中的注册银行用户基本信息的类,包括账户卡号、姓名、身份证号、联系电话、家庭住址。
要求是一个标准Java类(数据私有,提供seter/getter),然后提供一个toString方法打印该银行用户的信息。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\BankUser.java”2.设计银行项目中的帐户信息,包括帐户卡号、密码、存款,要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Account.java”3.设计银行项目中的管理员类,包括用户名和密码。
要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Manager.java”4.创建一个Rectangle类。
添加两个属性width、height,分别表示宽度和高度,添加计算矩形的周长和面积的方法。
测试输出一个矩形的周长和面积。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Rectangle.java”5.猜数字游戏:一个类A有一个成员变量v,有一个初值100。
定义一个类,对A类的成员变量v进行猜。
如果大了则提示大了,小了则提示小了。
等于则提示猜测成功。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Guess.java”6.编写一个Java程序,模拟一个简单的计算器。
定义名为Computer的类,其中两个整型数据成员num1和num1,编写构造方法,赋予num1和num2初始值,再为该类定义加、减、乘、除等公有方法,分别对两个成员变量执行加减乘除的运算。
《Java语言程序设计:基础篇》课后复习题答案-第五章
Chapter5Methods1.At least three benefits:(1)Reuse code;(2)Reduce complexity;(3)Easy to maintain.See the Sections5.2and5.3on how to declare and invoke methods.What is thesubtle difference between“defining a method”and“declaring a variable”?A declaration usually involvesallocating memory to store a variable,but a definitiondoesn’t.2.void3.Yes.return(num1>num2)?num1:num2;4.True:a call to a method with a void return type is always a statement itself.False:a call to a value-returning method is always a component of an expression.5.A syntax error occurs if a return statement is not used to return a value in a value-returning method.You can have a return statement in a void method,whichsimply exits the method.But a return statement cannot return a value such asreturn x+y in a void method.6.See Section5.2.puting a sales commission given the sales amount and the commission ratepublic static double getCommission(double salesAmount,doublecommissionRate)Printing a calendar for a monthpublic static void printCalendar(int month,int year)Computing a square rootpublic static double sqrt(double value)Testing whether a number is even and return true if it ispublic static boolean isEven(int value)Printing a message for a specified number of timespublic static void printMessage(String message,int times)Computing the monthly payment,given the loan amount,number of years,and annual interest rate.public static double monthlyPayment(double loan,intnumberOfYears,double annualInterestRate)Finding the corresponding uppercase letter given a lowercase letter.public static char getUpperCase(char letter)8.Line2:method1is not defined correctly.It does not have a return type or void.Line2:type int should be declared for parameter m.Line7:parameter type for n should be double to match method2(3.4).Line11:if(n<0)should be removed in method,otherwise a compile error is reported.9.public class Test{public static double xMethod(double i,double j){ while(i<j){j--;}return j;}}10.You pass actual parameters by passing the right type of value in the right order.The actual parameter can have the same name as its formal parameter.11."Pass by value"is to pass a copy of the value to the method.(A)The output of the program is0,because the variable max is not changed byinvoking the method max.(B)224248248162481632248163264(C)Before the call,variable times is3n=3Welcome to Java!n=2Welcome to Java!n=1Welcome to Java!After the call,variable times is3(D)12121421i is 512.Just before max is invoked.Space required for the main methodmax: 0Just entering max.Space required for the max methodmax: 0value2: 2 value1: 1Just before max is returnedSpace required for the main methodmax: 0Space required for the max methodmax: 2value2: 2 value1: 1 Space required for the main methodmax: 0Space required for the main methodmax: 0Right after max is returned13.Two methods with the same name,defined in the same class,is called method overloading.It is fine to have same method name,but different parameter types.You cannot overload methods based on return type,or modifiers.14.Methods public static void method(int x)and public static int method(int y)have the same signature method(int).15.Line 7:int n =1is wrong since n is already declared in the method signature.16.True17.(a)34+(int)(Math.random()*(55–34))(b)(int)(Math.random()*1000)(c)5.5+(Math.random()*(55.5–5.5))(d)(char)(‘a’+(Math.random()*(‘z’–‘a’+1))18.Math.sqrt(4)= 2.0Math.sin(2*Math.PI)=0Math.cos(2*Math.PI)=1Math.pow(2,2)= 4.0Math.log(Math.E)=1Math.exp(1)= 2.718Math.max(2,Math.min(3,4))=3 Math.rint(-2.5)=-2.0Math.ceil(-2.5)=-2.0Math.floor(-2.5)=-3.0Math.round(-2.5f)=-2Math.round(-2.5)=-2Math.rint(2.5)= 2.0Math.ceil(2.5)= 3.0Math.floor(2.5)= 2.0Math.round(2.5f)=3Math.round(-2.5)=-2Math.round(Math.abs(-2.5))=3。
北大《Java程序设计》测验作业与答案
int i = StdIn.readInt();
int j = StdIn.readInt();
int k = i + j;
System.out.println(j);
System.out.println(k);
}
}
假设文件input.txt的内容是两个整数1和1,下列的命令输出的两个数字分别是
Question 2
给出下列代码,下列那个说法是正确的:
public class Person{
static int arr[] = new int[10];
publicstatic void main(String a[]) {
System.out.println(arr[1]);
}
}
选择一个答案
char[]ch={'a','b','c'};
change(str,ch);
System.out.print(str+" and ");
System.out.print(ch);
}
public static void change(String str,char ch[]){
str="test ok";
选择一个答案
A. protectedB. friend
C. publicD. private
Question 4
假设定义函数cube()如下
public static void cube(int i) {
i = i * i * i;
}
Java基础第5章编程题答案
第五章编程题1.编写一个程序,实现字符串大小写的转换并倒序输出。
要求如下:(1)使用for循环将字符串“HelloWorld”从最后一个字符开始遍历。
(2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用toUpperCase()方法将其转换为大写字符。
(3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString()方法,并将得到的结果输出。
【参考答案】public class Chap5e {public static void main(String[] args) {String str="Hell5oWorld";char[] ch=str.toCharArray();StringBuffer s=new StringBuffer();for(int i=ch.length-1;i>=0;i--){if(ch[i]>='A'&&ch[i]<='Z')s.append(String.valueOf(ch[i]).toLowerCase());elseif(ch[i]>='a'&&ch[i]<='z')s.append(String.valueOf(ch[i]).toUpperCase());elses.append(String.valueOf(ch[i]));}System.out.print(s.toString());}}2. 利用Random类来产生5个20`30之间的随机整数并输出。
【参考答案】import java.util.Random;public class Chap5e {public static void main(String[] args) {Random r=new Random();for(int i=0;i<5;i++){System.out.println(r.nextInt(30-20+1)+20);}}}3. 编程. 已知字符串:”this is a test of java”.按要求执行以下操作:(1) 统计该字符串中字母s出现的次数(2) 取出子字符串”test”(3) 将本字符串复制到一个字符数组Char[] str中.(4) 将字符串中每个单词的第一个字母变成大写,输出到控制台。
java答案第五章
"改变Pi=3.00圆的面积:"+c.area());
}
}
运行结果:
3.在什么情况下,可以对父类对象的引用进行强制类型转换,使其转化成子类对象的引用?
答:一个对象被塑型为父类或接口后,可以再一次被塑型回到它原来所属的类,即转化成原类对象的引用。
4.声明一个接口,此接口至少具有一个方法;在一个方法中声明内部类实现此接口,并返回此接口的引用。
public class Circle implements Shape2D{
double radius;
public Circle(double r){radius=r;}
public double area(){return Pi*radius*radius;}
}
//A类(测试接口中隐含final的area()方法)
this.id=newid;
}
public void setname(String newname){
=newname;
}
public void setscoreOfenglish(float newscoreOfenglish){
this.scoreOfenglish=newscoreOfenglish;
//Student类
public class Student{
String id;
String name;
float scoreOfenglish;
float scoreOfmath;
float scoreOfcomputer;
float scoreOfsum;
//构造方法
public Student(){
JAVA课后作业第5章
5-1 创建如下类:Circle类(圆形)、Square类(正方形)和Point类(点)。
Point根据(x,y)坐标定位。
Circle除了一个(x,y)坐标点之外,还有半径属性。
正方形除了一个(x,y)坐标点之外,还有边长。
请问:这些类中哪些是超类,哪些是子类?
Point类是超类,Circle类和Square类是子类。
5-2 关键字组合问题。
(1)abstract方法能否是final类型的?不行
(2)abstract方法能否是static类型的?不行
(3)能否定义一个私有静态(private static)方法?不行
5-3 简单说明方法重载与方法覆盖的区别。
方法的重载是指在一个类中,出现多个方法名相同,但参数个数或参数类型不同的方法。
方法覆盖体现了子类补充或者改变父类方法的能力,通过覆盖,可以使一个方法在不同的子类中表现出不同的行为。
5-4 列举出面向对象的三大特性。
封装、继承、多态。
java第五章习题及答案
1.Internet/Intranet Server(服务器),客户端
2.初始化、启动、停止、退出
3.事件
4.ActionEvent,ActionListener,actionPerformed(ActionEvent e)
5.CheckboxGroup,Checkbox,Choice,List,ItemEvent
result.setText(j.toString(i));
}
catch(ArithmeticException ee){
result.setText("divided by zero");
}
}
}
class clearL implements ActionListener{
public void actionPerformed(ActionEvent e){
TextField result=new TextField(10);
Label la1=new Label("first data:");
Label la2=new Label("second data:");
Label la3=new Label("equal:");
Button plus=new Button("+");
二.选择题:
4.b5.A6.A7.a
二.编程题:
1.
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassExampleextendsAppletimplementsActionListener{
java课后习题答案
java课后习题答案java课本课后习题答案第五章继承、接口与泛型1、子类在什么情况下可以继承父类的友好成员?答:父子类在同一包中时子类可以继承父类的友好成员。
2、子类通过什么办法,可以隐藏继承的成员变量。
答:子类成员变量与父类成员变量同名。
3、子类重写继承方法的规则是什么?答:重写隐藏父类的方法需:返回的数据类型相同,参数的个数相同,并且类型相同。
如果重写父类的方法后参数的个数或类型不同会出现子类方法的重载。
4.子类的构造方法的第一条语句是什么?答:如果需要调用父类构造方法,则应是用super关键词调用父类的构造方法。
5、子类一旦重写了继承的方法,就会隐藏继承的方法。
是这样吗?答:不一定。
在参数的个数或类型不同时会产生重载。
如果只有返回值的类型不同,将会产生编译错误。
(5)子类隐藏父类的方法,参数必须______相同并且__________相同.答:个数,类型6、子类重写继承方法时,可以降低方法的权限吗?答:重写继承方法时不能降低访问权限。
7、简述关键字super的用法。
答:1)子类调用父类的构造方法。
2)子类对象引用被隐藏了的父类方法,或成员变量。
8.假设父类有一个方法:Public double f(double x, double y){return x+y;}是否允许子类再声明如下的方法:Public float f(double x, double y){return 23;}答:不允许。
9、父类的final方法可以被子类重写吗?答:不可以10、什么类中可以有abstract方法?答:被abstract修饰的类。
接口中也可以有abstract方法11、什么叫做对象的上转型对象?答:用子类的构造方法构造出来的对象,赋值给父类对象。
12、什么叫接口回调?答:用实现接口的类创建的对象,赋值给该接口声明的接口变量。
13、与类有关的匿名类一定是该类的子类吗?与接口有关的匿名类一定是实现该接口的一个类吗?答:一定,因为类创建对象时,除了构造方法还有类体,此类体被认为是该类的一个子类去掉类声明后的类体。
Java 2实用教程(第五版)课后习题五
一、问答题1.子类可以有多个父类吗?不能2.ng包中的Object类是所有其他类的祖先类吗?是3.如果子类和父类不在同一个包中,子类是否继承父类的友好成员?不继承4.子类怎样隐藏继承的成员变量?声明与父类同名的成员变量5.子类重写方法的规则是怎样的?重写方法的目的是什么?子类重写的方法的返回值类型,方法名,参数类型,顺序,个数都要与父类继承的方法相同,而且访问修饰符的限定范围大于等于父类方法。
目的是可以父类的状态和行为改变为自身的状态和行为,实现多态。
6.父类的final方法可以被子类重写吗?不能。
7.什么类中可以有abstract方法?abstract类。
abstract方法必须在abstract类中,而abstract116类中可以没有abstract方法。
8.对象的上转型对象有怎样的特点?上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。
上转型对象可以访问子类继承或隐藏的成员变量,可以调用子类继承的方法或子类重写的实例方法。
9.一个类的各个子类是怎样体现多态的?通过重写方法。
10.面向抽象编程的目的和核心是什么?面向抽象编程目的是为了应对用户需求的变化,核心是让类中每种可能的变化对应地交给抽象类的一个子类去负责,从而让该类的设计者不去关心具体实现。
二、选择题1.下列哪个叙述是正确的? C子类继承父类的构造方法。
abstract类的子类必须是非abstract类。
子类继承的方法只能操作子类继承和隐藏的成员变量。
子类重写或新增的方法也能直接操作被子类隐藏的成员变量。
2.下列哪个叙述是正确的? C Dfinal 类可以有子类。
117abstract类中只可以有abstract方法。
abstract类中可以有非abstract方法,但该方法不可以用final修饰。
不可以同时用final和abstract修饰同一个方法。
允许使用static修饰abstract方法。
3.下列程序中注释的哪两个代码(A,B,C,D)是错误的(无法通过编译)? C Dclass Father {private int money =12;float height;int seeMoney(){return money ; //A}}class Son extends Father {int height;int lookMoney() {int m = seeMoney(); //Breturn m;118}}class E {public static void main(String args[]) {Son erzi = new Son();erzi.money = 300; //Cerzi.height = 1.78F; //D}}4.假设C是B的子类,B是A的子类,cat是C类的一个对象,bird 是B类的一个对象,下列哪个叙述是错误的? Dcat instanceof B的值是true。
Java课后习题答案第五章
char c[] = {'O','l','y','m','p','i','c',' ','G','a','m','e','s'};
rever(c);
System.out.println(c);
}
public static void rever(char c[]){char t;
for(int i=0,j=c.length-1;i<j;i++,j--)
import java.io.*;
public class Test
{ public static void main(String[] args)
{ int i,a=0,s=0;
System.out.print("请输入数a:");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
{
sum+=x[i];
}
System.out.println("平均数:"+sum/10);
}
}
17.利用数组输入6位大学生3门课程的成绩,然后计算
(1)每个大学生的总分;
(2)每门课程的平均分;
import java.io.*;
public class Scores
{
public static void main(String[] args)throws IOException
java课后习题答案及部分作业答案
第一章Java概述一、选择题1、下面哪个是在Dos命令提示符下编译Java程序的命令?(A )A. javacB. javaC. javadocD. javaw2、以下哪些是Java程序中有效的注释符号?(ABC )A. //B. /* */C. /** */D. */ */3、以下哪个不是Java语言的特点?(B )A. 面向对象B. 自动检查语法错误C. 跨平台D. 解释执行4、Java编译器会将Java程序转换为(C )A. 可执行代码B. 目标代码C. 字节码D. 机器代码5、Java源文件的扩展名是(D )A. .classB. .jarC. .javD. .java二、简答题1、Java的跨平台的含义是什么?为什么Java可以跨平台?Java语言的一个非常重要的特点就是平台无关性。
它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。
Java之所以能平台无关,主要是依靠Java虚拟机(JVM)来实现的。
JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。
Java编程人员在编写完Java程序后,Java编译器将Java源代码文件编译后生成字节码文件2、简述Java语言的特点Java具有以下特点:1)、简单性Java语言的语法规则和C语言非常相似,只有很少一部分不同于C语言,并且Java还舍弃了C语言中复杂的数据类型(如:指针和结构体),因此很容易入门和掌握。
2)、可靠性和安全性Java从源代码到最终运行经历了一次编译和一次解释,每次都有进行检查,比其它只进行一次编译检查的编程语言具有更高的可靠性和安全性。
3)、面向对象Java是一种完全面向的编程语言,因此它具有面向对象编程语言都拥有的封装、继承和多态三大特点。
4)、平台无关和解释执行Java语言的一个非常重要的特点就是平台无关性。
它是指用Java编写的应用程序编译后不用修改就可在不同的操作系统平台上运行。
java习题及答案第5章习题参考答案
java习题及答案第5章习题参考答案第5章习题解答1.使⽤抽象和封装有哪些好处?答:抽象是⼈们解决问题的基本⼿段,程序设计过程中需要对问题领域进⾏分析、设计中得出的抽象概念,然后封装成⼀些类。
封装也称为信息隐藏,是指利⽤抽象数据类型将数据和基于数据的操作封装在⼀起,使其构成⼀个不可分割的独⽴实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留⼀些对外接⼝使之与外部发⽣联系。
系统的其他部分只有通过包裹在数据外⾯的被授权的操作来与这个抽象数据类型交流与交互。
也就是说,⽤户⽆需知道对象内部⽅法的实现细节,但可以根据对象提供的外部接⼝(对象名和参数)访问该对象。
把对象中相同或相似地地⽅抽象出来,从特殊到⼀半,从具体到抽象的过程,对象经过抽象得到类,类的实例化成了对象。
也可以⾼度抽象成接⼝,让不完全相同,但包含相同点的对象实现此接⼝,也就是利⽤多态实现。
把相同点抽象出来,抽象成此类或接⼝的⽅法、属性、字段等,封装就是隐藏某个对象的与其基本特性没有很⼤关系的所有详细信息的过程,就是将需要让其他类知道的暴露出来,不需要让其他类了解的全部隐藏起来,封装可以阻⽌对不需要信息的访问,我们可以使⽤访问指定符实现封装,也可以使⽤⽅法实现封装,可以将隐藏的信息作为参数或者属性值、字段指传给公共的接⼝或⽅法,以实现隐藏起来的信息和公开信息的交互。
封装的⽬的就是为了实现“⾼内聚,低耦合”。
⾼内聚就是类的内部数据操作细节⾃⼰完成,不允许外部⼲涉,就是这个类只完成⾃⼰的功能,不需要外部参与;低耦合,就是仅暴露很少的⽅法给外部使⽤。
2.构造⽅法的作⽤是什么?它与⼀般的成员⽅法在使⽤和定义⽅⾯有什么区别?答:构造⽅法⽤于⽣成⼀个对象实例,并对对象实例中的成员变量初始化。
当⽤new创建⼀个类的新的对象时,构造⽅法⽴即执⾏。
构造⽅法名字必须与类名相同。
3.Overload和Override的区别?答:⽅法重载(overloading)与⽅法覆盖(overriding)是实现多态性的基本⼿段,但两者的机制不同。
北师大java练习题答案
北师大java练习题答案一、选择题(每题2分,共20分)1. Java语言中的main方法是程序的入口点,它属于哪个类?A. ng.ObjectB. ng.SystemC. ng.ThreadD. ng.Runtime2. 下列哪个关键字用于定义类?A. classB. publicC. privateD. static3. 在Java中,哪个关键字用于定义一个方法?A. classB. methodC. functionD. void4. 以下哪个是Java中的合法变量名?A. 2variableB. variable-nameC. variable$nameD. variable!name5. Java中,哪个关键字用于定义一个类为抽象类?A. abstractC. interfaceD. static6. 下列哪个是Java中的集合框架类?A. ArrayListB. ListC. VectorD. All of the above7. Java中,哪个关键字用于实现多态?A. extendsB. implementsB. overrideD. All of the above8. 在Java中,哪个方法用于获取当前对象的引用?A. this()B. self()C. me()D. current()9. 下列哪个是Java中的异常处理关键字?A. tryB. catchC. finallyD. All of the above10. Java中,哪个关键字用于定义接口?A. classB. interfaceD. method二、填空题(每空2分,共20分)11. Java是一种______型语言,它支持______和______。
(面向对象,封装,继承)12. 在Java中,______关键字用于定义一个方法的返回类型。
(return)13. 一个Java类可以有多个______方法,但只能有一个main方法。
JAVA程序设计课后习题及答案5
第5章1.异常是标准类Throwable的一些子类的对象,每一种异常对应着一种特定的运行错误。
错误类(Error)和异常类(Exception)是派生自该类的两个直接子类。
Java就是通过错误类和异常类来处理应用程序中产生的错误和异常。
如果在Java应用程序的运行过程中发生了一个可以识别的运行错误,系统都会产生一个该异常类的对象,也就是产生一个异常。
一旦产生了异常,系统就有相应的处理机制来处理它,确保应用程序能够改变执行的方向,不产生严重的错误,从而保证整个应用程序的安全性,这就是Java的异常处理机制。
Java的异常处理机制是通过抛出异常和捕获异常进行的。
2.一般地,系统捕获到程序抛出的异常对象后,会输出相应的信息,并终止程序的运行。
这导致后面的程序无法运行。
为了避免异常对其他程序的影响,需要使程序能够接收和处理异常对象。
在Java 的异常处理机制中,提供了try-catch-finally语句来捕获和处理一个或多个异常。
3.Throwable类的一些子类的对象都对应着一种异常,每一种异常对应着一种特定的运行错误。
Java就是通过Throwable类来处理应用程序中产生的错误和异常4.所谓自定义异常,就是定义一个继承自Exception类的子类。
需要说明的是,一般情况下自定义异常类都是直接继承自Exception 类,而不是继承自某个运行时的异常类。
编写程序:略5.对于Java源程序中自定义的异常,需要借助throws语句来定义什么情况下产生了异常,并且抛出这个异常类的新对象。
对于程序抛出的异常,可以只编写一个异常处理程序就能捕获所有类型的异常。
6.略。
JAVA语言程序设计基础课后习题第五章
JAVA语⾔程序设计基础课后习题第五章//exercise 5.1package fivechapterexercise1;public class first {public static void main(String[] args) {// TODO Auto-generated method stubfinal int NUMBER_OF_PENTAGONAL_PER_LINE=10;for(int i=1;i<=100;i++){System.out.print(getpentagonalnumber(i)+" ");if(i%NUMBER_OF_PENTAGONAL_PER_LINE==0)System.out.println();}}public static int getpentagonalnumber(int i){return i*(3*i-1)/2;}}//exercise 5.2package fivechapterexercise1;import java.util.Scanner;public class second {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.print("input a integer :");int integer=in.nextInt();System.out.println("The sum of digits is "+getsumdigits(integer));}public static int getsumdigits(int integer){int sum=0;while(integer!=0){sum += integer%10;integer /=10;}return sum;}}//exercise 5.3package fivechapterexercise1;import java.util.Scanner;public class third {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.print("please input a integer:");int integer=in.nextInt();System.out.println("This integer is a palindrome?"+ispalindrome(integer));}public static boolean ispalindrome(int integer){if(integer==reverse(integer))return true;elsereturn false;}public static int reverse(int integer){int count=0;int temp=integer;while(integer!=0){integer /=10;count++;}int sum=0;for(int i=count;i>=1;i--){sum=sum+(int)(Math.pow(10, i-1))*(temp%10);temp /= 10;}return sum;}}//exercise 5.4package fivechapterexercise1;import java.util.Scanner;public class fourth {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.print("please input integer:");int integer=in.nextInt();System.out.print("The palindrome is:"+reverse(integer));}public static int reverse(int integer){int count=0;int temp=integer;while(integer!=0){integer /=10;count++;}int sum=0;for(int i=count;i>=1;i--){sum=sum+(int)(Math.pow(10, i-1))*(temp%10);temp /= 10;}return sum;}}//exercise 5.5package fivechapterexercise1;public class fifth {public static void main(String[] args) {// TODO Auto-generated method stubdisplaySortedNumbers(4.4,2.4,9.8);}public static void displaySortedNumbers(double num1,double num2,double num3){if(num1>num2){double temp=num1;num1=num2;num2=temp;}if(num1>num3){double temp=num1;num1=num3;num3=temp;}if(num2>num3){double temp=num2;num2=num3;num3=temp;}System.out.println("Ascending order number three:"+num1+","+num2+","+num3+"."); }}//exercise 5.6package fivechapterexercise1;public class sixth {public static void main(String[] args) {// TODO Auto-generated method stubdisplayPattern(15);}public static void displayPattern(int n){for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){System.out.print(" ");}for(int j=i;j>=1;j--){System.out.printf("%3d", j);}System.out.println();}}}//exercise 5.7package fivechapterexercise1;import java.util.Scanner;public class seventh {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.print("input investment amount and annually interest rate:");int investmentAmount=in.nextInt();double annuallyInterestrate=in.nextDouble()/1200;System.out.println("Years\tFuture Value");for(int i=1;i<=30;i++){System.out.println(i+" \t"+futureInvestmentValue(investmentAmount,annuallyInterestrate,i));}}public static double futureInvestmentValue(double investmentAmount,double monthlyInterestRate,int years){double futureinvestmentValue=investmentAmount*(Math.pow((1+monthlyInterestRate),years));return futureinvestmentValue;}}//exercise 5.8package fivechapterexercise1;public class eighth {public static void main(String[] args) {// TODO Auto-generated method stubdouble celsius=40.0;double fahrenheit=120.0;System.out.println("摄⽒度\t华⽒度\t 华⽒度\t摄⽒度");for(int i=1;i<=10;i++){System.out.println(celsius+"\t"+((int)(celsiustofahrenheit(celsius)*10)/10.0)+"\t "+ fahrenheit+" "+((int)(fahrenheittocelsius(fahrenheit)*10)/10.0));celsius--;fahrenheit -=10;}}public static double celsiustofahrenheit(double celsius){return (9.0/5)*celsius+32;}public static double fahrenheittocelsius(double fahrenheit){return (fahrenheit-32)/(9.0/5);}}//exercise 5.9package fivechapterexercise1;public class ninth {public static void main(String[] args) {// TODO Auto-generated method stubdouble celsius=1.0;double fahrenheit=20.0;System.out.println("英尺\t⽶\t ⽶\t英尺");for(int i=1;i<=10;i++){System.out.println(celsius+"\t"+((int)(celsiustofahrenheit(celsius)*10)/10.0)+"\t "+ fahrenheit+" "+((int)(fahrenheittocelsius(fahrenheit)*10)/10.0));celsius++;fahrenheit +=5;}}public static double celsiustofahrenheit(double celsius){return celsius*0.305;}public static double fahrenheittocelsius(double fahrenheit){return (fahrenheit/0.305);}}//exercise 5.10package fivechapterexercise1;import fivechapter1.seventh;public class tenth {public static void main(String[] args) {// TODO Auto-generated method stubint count=0;for(int i=1;i<=10000;i++){if(seventh.isPrime(i))count++;}System.out.println("The number of prime is "+ count);}}//exercise 5.11package fivechapterexercise2;public class first {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("销售总额\t\t酬⾦");int salesamount=10000;for(int i=1;i<20;i++){System.out.println(salesamount+"\t\t"+computecommission(salesamount));salesamount+=5000;}}public static double computecommission(double salesamount){if(salesamount<5000)return salesamount*0.08;else if(salesamount<10000)return 5000*0.08+(salesamount-5000)*0.10;elsereturn 5000*0.08+5000*0.10+(salesamount-10000)*0.12;}}//exercise 5-12package fivechapterexercise2;public class second {public static void main(String[] args) {// TODO Auto-generated method stubprintChars('1','Z',10);}public static void printChars(char ch1,char ch2,int numberPerLine){int number=ch2-ch1+1;final int NUMBER_OF_CHARS_PER_LINE=numberPerLine;for(int i=0;i<number;i++){System.out.print((char)(ch1+i)+" ");if((i+1)%NUMBER_OF_CHARS_PER_LINE==0) System.out.println();}}}//exercise 5.13package fivechapterexercise2;public class third {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("i\t\tm(i)");for(int i=1;i<=20;i++){System.out.println(i+"\t\t"+m(i));}}public static double m(double integer){double sum=0;for(int i=1;i<=integer;i++){sum=sum+(double)i/(i+1);}return sum;}}//exercise 5-14package fivechapterexercise2;public class fourth {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("i\t\tm(i)");int number=10;for(int i=1;i<=10;i++){System.out.println(number+"\t\t"+m(number)); number +=10;}}public static double m(int integer){double sum=0;for(int i=1;i<=integer+1;i++){sum =sum+(Math.pow(-1,i-1)*(1.0/(2*i-1)));}return 4*sum;}}//exercise 5.17package fivechapterexercise2;public class seventh {public static void main(String[] args) {// TODO Auto-generated method stubprintMatrix(3);}public static void printMatrix(int n){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){System.out.print((int)(Math.random()*2)+" "); }System.out.println();}}}//exercise 5.18package fivechapterexercise2;public class eighth {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("number\t\tsqir");for(int i=0;i<=10;i++){System.out.println(2*i+"\t\t"+Math.sqrt(2*i));}}}//exercise 5-19package fivechapterexercise2;public class ninth {public static void main(String[] args) {// TODO Auto-generated method stubdouble side1=2,side2=3,side3=4;System.out.println("side1=2,side2=3,side3=4 is a triangle?"+isvalid(side1,side2,side3));}public static boolean isvalid(double side1,double side2,double side3){if(side1<side2){double temp=side1;side1=side2;side2=temp;}if(side1<side3){double temp=side1;side1=side3;side3=temp;}if(side1<side2+side3)return true;elsereturn false;}public static double area(double side1,double side2,double side3){double s=(side1+side2+side3)/2;//calculation areadouble area=Math.pow(s*(s-side1)*(s-side2)*(s-side3),0.5);return area;}}//exercise 5-20package fivechapterexercise2;public class tenth {public static void main(String[] args) {// TODO Auto-generated method stubfinal double RADIANS=Math.PI/180.0;int angle=0;System.out.println("angle\tsine\tcosine");for(int i=0;i<=36;i++){System.out.println(angle+"\t"+Math.sin(angle*RADIANS)+"\t"+Math.cos(angle*RADIANS)); angle += 10;}}}//exercise 5-21package fivechapterexercise3;import java.util.Scanner;//not precisepublic class first {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.print("Enter ten numbers:");double []number=new double[10];for(int i=0;i<10;i++){number[i]=in.nextDouble();}System.out.println("The mean is "+average(number));System.out.println("The standard deviation is "+standarddeviation(number)); }public static double average(double ...average){double sum=0;for(int i=0;i<average.length;i++){sum=sum+average[i];}return sum/average.length;}public static double standarddeviation(double ...number){double sum=0;double squaresum=0;for(int i=0;i<number.length;i++){squaresum += Math.sqrt(number[i]);sum += number[i];}double num1=squaresum-Math.sqrt(sum)/(number.length);double num2=num1/(number.length-1);double calculation=Math.pow(num2,0.5);return calculation;}}//exercise 5-22package fivechapterexercise3;public class second {public static void main(String[] args){System.out.println("sqrt of 4 is "+sqrt(4));}public static double sqrt(double number){double lastguess=1;double reduce=1;while (reduce>0.00000001){double nextguess=(lastguess+(number/lastguess))/2;reduce=nextguess-lastguess;lastguess=nextguess;}return lastguess;}}//exercise 5.23package fivechapterexercise3;import chenqingyuan.RandomCharacter;public class third {public static void main(String[] args) {// TODO Auto-generated method stubfor(int i=0;i<100;i++){if(i%10==0)System.out.println();System.out.print(RandomCharacter.getRandomUpperCaseLetter()+" "); }System.out.println("\n\n");for(int i=0;i<100;i++){if(i%10==0)System.out.println();System.out.print(RandomCharacter.getRandomDigitCharacter()+" ");}}}//exercise 5.26package fivechapterexercise3;import chenqingyuan.math;public class sixth {public static void main(String[] args) {// TODO Auto-generated method stubint count=0;int integer=1;while(count<100){if(math.isPrime(integer)&&math.isPalindrome(integer)){if(count%10==0)System.out.println();System.out.print(integer+" ");count++;}integer++;}}}//exercise 5-27package fivechapterexercise3;import chenqingyuan.math;public class seventh {public static void main(String[] args) {// TODO Auto-generated method stubint count=0;int integer=1;while(count<100){if(math.isPrime(integer)&&math.isPrime(math.reverse(integer))&&!math.isPalindrome(integer)){if(count%10==0)System.out.println();System.out.print(integer+" ");count++;}integer++;}}}package fivechapterexercise3;public class eifhth {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("p\t\t2^p-1");for(int p=1;p<=31;p++){int number=(int)Math.pow(2,p)-1;if(chenqingyuan.math.isPrime(number))System.out.println(p+"\t\t"+number);}}}//exercise 5.29package fivechapterexercise3;public class ninth {public static void main(String[] args) {// TODO Auto-generated method stubint num1=(int)(Math.random()*6)+1;int num2=(int)(Math.random()*6)+1;int sum=num1+num2;System.out.print("You rolled "+num1+" + "+num2+" = "+sum);System.out.println();if(sum==3||sum==12){System.out.println("You lose");System.exit(0);}else if(sum==7||sum==11){System.out.println("You win");System.exit(0);}else{while(true){int num3=(int)(Math.random()*6)+1;int num4=(int)(Math.random()*6)+1;int add=num3+num4;if(sum==add){System.out.println("point is "+sum);System.out.print("You rolled "+num3+" + "+num4+" = "+add);System.out.println();System.out.println("You win");System.exit(0);}else if (add==7){System.out.println("point is "+sum);System.out.print("You rolled "+num3+" + "+num4+" = "+add); System.out.println();System.out.println("You lose");System.exit(0);}}}}}//exercise 5.30package fivechapterexercise3;import chenqingyuan.math;public class tenth {public static void main(String[] args) {// TODO Auto-generated method stubfor(int i=1;i<1000;i++){if(math.isPrime(i)&&math.isPrime(i+2))System.out.println("("+i+","+(i+2)+")");}}}//exercise 5.32package fivechapterexercise4;public class second {public static void main(String[] args) {// TODO Auto-generated method stubint count=0;for(int i=1;i<=10000;i++){int num1=(int)(Math.random()*6)+1;int num2=(int)(Math.random()*6)+1;int sum=num1+num2;if(sum==3||sum==12){continue;}else if(sum==7||sum==11){count++;continue;}else{while(true){int num3=(int)(Math.random()*6)+1;int num4=(int)(Math.random()*6)+1;int add=num3+num4;if(sum==add){count++;break;}else if (add==7){break;}}}}System.out.println("The number if times you win is "+count);}}//exercise 5.33package fivechapterexercise4;import chenqingyuan.math;//System.currentTimeMillis() display is USA timepublic class third {public static void main(String[] args) {// TODO Auto-generated method stublong millisecond=System.currentTimeMillis();long second=millisecond/1000%60;long minute=millisecond/1000/60%60;//+8 is to solve the time differencelong hour=(millisecond/3600/1000+8)%24;long day=(millisecond/3600/1000+8)/24;//judge yearlong daya=day-730;long day1=daya%1461;long count=daya/1461;//judge yearlong years=1970+2+4*count;if(day1>366){years =years+1;day1 -= 366;}while(day1>365){years +=1;day1 -= 365;}//resolve error !!To solve the time differenceday1 +=1;//judge monthint month=1;int mark;while(true){if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){mark=(int)day1/32;if(mark!=0){day1 -= 31;month++;}elsebreak;}else if(month==2){int numberofmonth=0;if(!math.isLeapYear((int)years))numberofmonth=28;elsenumberofmonth=29;mark=(int)day1/(numberofmonth+1);if(mark!=0){day1 -= numberofmonth;month++;}elsebreak;}else {mark=(int)day1/31;if(mark!=0){day1 -= 30;month++;}elsebreak;}}System.out.println("Current date and time is "+math.getMonthName(month)+" "+day1+","+years+" "+hour+":"+minute+":"+second); }}//exercise 5.35package fivechapterexercise4;import java.util.Scanner;public class fifth {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.print("please input side:");int side=in.nextInt();System.out.println("This area is "+area(side));}public static double area(int side){double molecular=5*side*side;double denominator=4*Math.tan(Math.PI/5);return molecular/denominator;}}//exercise 5.36package fivechapterexercise4;import java.util.Scanner;public class sixth {public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.print("input number of side and side:");int numberofside=in.nextInt();int side=in.nextInt();System.out.println("This area is "+area(numberofside,side)); }public static double area(int n,int side){double molecular=n*side*side;double denominator=4*Math.tan(Math.PI/n);return molecular/denominator;}}。
Java基础第5章编程题答案
第五章编程题1.编写一个程序,实现字符串大小写的转换并倒序输出。
要求如下:(1)使用for循环将字符串“HelloWorld”从最后一个字符开始遍历。
(2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用toUpperCase()方法将其转换为大写字符。
(3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString()方法,并将得到的结果输出。
【参考答案】public class Chap5e {public static void main(String[] args) {String str="Hell5oWorld";char[] ch=str.toCharArray();StringBuffer s=new StringBuffer();for(int i=ch.length-1;i>=0;i--){if(ch[i]>='A'&&ch[i]<='Z')s.append(String.valueOf(ch[i]).toLowerCase());elseif(ch[i]>='a'&&ch[i]<='z')s.append(String.valueOf(ch[i]).toUpperCase());elses.append(String.valueOf(ch[i]));}System.out.print(s.toString());}}2. 利用Random类来产生5个20`30之间的随机整数并输出。
【参考答案】import java.util.Random;public class Chap5e {public static void main(String[] args) {Random r=new Random();for(int i=0;i<5;i++){System.out.println(r.nextInt(30-20+1)+20);}}}3. 编程. 已知字符串:”this is a test of java”.按要求执行以下操作:(1) 统计该字符串中字母s出现的次数(2) 取出子字符串”test”(3) 将本字符串复制到一个字符数组Char[] str中.(4) 将字符串中每个单词的第一个字母变成大写,输出到控制台。
北大《Java》编程练习答案第五课
5-1 假帐克星-- Benford's Law时间限制: 10秒内存限制: 64M假设走在大街上,随机选择一些人,让他们每人随便写下一个数字,得到的数字的分布将很有可能不是均匀的分布。
这很容易理解,比如,中国人就比较避讳数字4,而倾向于数字6或8等。
如果一个公司做假账,自作聪明的伪造者试图在账目中间“隐藏”数据,绝大多数情况下他们都很难高明到不露马脚。
2001年,“9.11”事件发生后不久,曾是美国最大的能源交易商、年营业收入达近千亿美元、股票市值最高可达700多亿美元、全球500强中排名第七的安然公司在事先没有任何征兆的情况下突然宣布破产。
不久就传出了该公司高层管理人员涉嫌做假账的丑闻,一时间,会计造假成了中外关注的焦点。
研究人员从安然公司所公布的一些数据进行统计分析,果然发现了一些征兆。
例如,安然公司在2001年度到2002年度所公布的每股盈利数字的分布就有问题,这些数字的使用频率与一个著名的定律--Benford's law(本福特定律)有较大的偏差,说明这些盈利数据一定是经过篡改后的。
图:本福特定律、真实税收数据、伪造数据、随机数据的数字分布来源(/topics/intellect_and_entertain/following_benfords_law.htm )Benford's law本福特定律,是关于某些类型数据的开头数字的分布规律的,该定律与你的直觉可能有些偏离:大多数人会认为,世界上千千万万的数据(非0开头)的开头数字是1到9的任何一个数字,而且每个数字开头的概率应该差不多。
现在,请你随便找本书,统计一下上面的各种开头数据的开头数字,看看是否符合设想。
如果你统计的数据足够多,你就会惊讶的发现,并非每个数字出现的概率均等,实际中以1为开头的数字出现的频率并不是人们想当然认为的1/9,而是0.301,这说明30%的数字都以1开头。
而2为首的数字出现的频率是0.176,3开头的数字出现的频率为0.125,往后出现频率依此减少,9打头的数字出现的频率最低,只有0.046。
java程序设计项目教程第五章答案
参考答案:
1.A 2.A3.C 4.B5.B6.B7.A8.B9.A10.C
二、填空题
参考答案:
1.swing2.布局管理器3.setLayout()4.mouseRelease
5.适配器6.ActionListener7.事件事件源8.JMenu
三、编程
1.设计如图样式的图形用户界面(不要求实现功能)。
JTextField t2=newJTextField("57",3);
JTextField t3=newJTextField("59",3);
JTextField t4=newJTextField(3);
JTextField t5=newJTextField(3);
JTextField t6=newJTextField(3);
JButton answerButton;
JButton questionButton;
JButton scoreButton;
public TestPanel()
{
setLayout(new BorderLayout());
JPanel northPanel=new JPanel();
northPanel.setLayout(new GridLayout(2,1));
JLabel b5 = newJLabel("闹钟时间:");
JLabel b6 = newJLabel("时");
JLabel b7= newJLabel("分");
JLabel b8 = newJLabel("秒");
JLabel b9 = newJLabel("闹钟设置");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5-1 假帐克星-- Benford's Law时间限制: 10秒内存限制: 64M假设走在大街上,随机选择一些人,让他们每人随便写下一个数字,得到的数字的分布将很有可能不是均匀的分布。
这很容易理解,比如,中国人就比较避讳数字4,而倾向于数字6或8等。
如果一个公司做假账,自作聪明的伪造者试图在账目中间“隐藏”数据,绝大多数情况下他们都很难高明到不露马脚。
2001年,“9.11”事件发生后不久,曾是美国最大的能源交易商、年营业收入达近千亿美元、股票市值最高可达700多亿美元、全球500强中排名第七的安然公司在事先没有任何征兆的情况下突然宣布破产。
不久就传出了该公司高层管理人员涉嫌做假账的丑闻,一时间,会计造假成了中外关注的焦点。
研究人员从安然公司所公布的一些数据进行统计分析,果然发现了一些征兆。
例如,安然公司在2001年度到2002年度所公布的每股盈利数字的分布就有问题,这些数字的使用频率与一个著名的定律--Benford's law(本福特定律)有较大的偏差,说明这些盈利数据一定是经过篡改后的。
图:本福特定律、真实税收数据、伪造数据、随机数据的数字分布来源(/topics/intellect_and_entertain/following_benfords_law.htm )Benford's law本福特定律,是关于某些类型数据的开头数字的分布规律的,该定律与你的直觉可能有些偏离:大多数人会认为,世界上千千万万的数据(非0开头)的开头数字是1到9的任何一个数字,而且每个数字开头的概率应该差不多。
现在,请你随便找本书,统计一下上面的各种开头数据的开头数字,看看是否符合设想。
如果你统计的数据足够多,你就会惊讶的发现,并非每个数字出现的概率均等,实际中以1为开头的数字出现的频率并不是人们想当然认为的1/9,而是0.301,这说明30%的数字都以1开头。
而2为首的数字出现的频率是0.176,3开头的数字出现的频率为0.125,往后出现频率依此减少,9打头的数字出现的频率最低,只有0.046。
除了在会计账目数字上,定律的发现者,美国的物理学家Benford,发现各种完全不同的数据,比如人口,死亡率,物理和化学常数,棒球统计表,半衰期放射性同位素,对数表,物理书中的答案,素数数字中均有这个定律的身影。
本福特定律在我们的日常生活中很常见。
对于财务数据,有趣的是,数学家们还发现,在那些假账中,数字5和6居然是最常见的打头数字,而不是符合定律的数字1。
如果审核账本的审计人员掌握了“本福特定律”,伪造者们要通过审计就会相当的困难。
Benford定律因此也被誉为“假账克星”。
该定理甚至还可以用于发现选举投票中的欺诈行为。
选举投票的票数数据也符合这个定律,如果有人修改票数量,就会漏出蛛丝马迹来。
研究人员依据这一定律发现了2004年美国总统选举中佛罗里达州的投票欺诈行为,2004年委内瑞拉的投票欺诈和2006年墨西哥投票欺诈。
前段时间的伊朗的大选可谓轰轰隆隆,颇引人注目,内贾德在胜出之后却引来一片质疑,有科学家就尝试用Benford定律去发现是否存在投票欺诈行为(链接)。
=====本题要求你验证Benford定律,对给定的一段文本,分别算出其中以每个数字1-9打头的数据的比例并输出。
输入:数据文件(filesize.txt,某文件存储设备上各种文件的尺寸),里面包含很多整数数据,每个数据占一行。
输出:数字1-9打头的数据所占的比例。
为了便于自动检查结果。
请使用格式化输出,格式化字符串为"%d: %6.1f%%\n"其中第一个参数为数字1-9,第二个参数为对应的百分比。
public class Main{public static void main(String[] args) {int iSum=0;int iCount[]=new int;while (!StdIn.isEmpty()){int iTemp=StdIn.readInt();while(iTemp>=10)iTemp/=10;iCount++;iSum++;}for (int i=0; i<9; i++)System.out.printf("%d: %6.1f%%\n",i+1,100.0*iCount/iSum);}}时间限制: 3秒内存限制: 64M我们常常看到各种各样的月历。
其实月历的一个重要部分是日期和星期的对齐,根据之前的知识,请编写一个程序,输出月历卡片,格式要求见后面的样例输出。
提示:请参考前面的编程练习“星期几”并注意闰年的问题。
输入:需要输出的年、月输出:对应的月历卡片。
第一行为标题,年份用数字,月份用中文输出。
第二行是星期几,请按照样例输出的格式输出。
接下来的各行是日期,需要进行相应的对齐。
注意,因为中文编码的关系,建议使用StdIn和StdOut进行输入输出操作。
样例输入:2010□4↵样例输出:□□□□2010年四月↵日□一□二□三□四□五□六↵□□□□□□□□□□□□□1□□2□□3□↵□4□□5□□6□□7□□8□□9□10□↵11□12□13□14□15□16□17□↵18□19□20□21□22□23□24□↵25□26□27□28□29□30□↵import java.util.*;public class Main{public static void main(String[] args) {Scanner cin = new Scanner(System.in);int iYear = cin.nextInt(),iMonth = cin.nextInt();boolean isLeapYear = false;int iDay = 0;String str = "\0\0\0\0%d年";switch(iMonth){case 1:str += "一";iDay = 31;break;case 2:str += "二";//只有二月才需要计算是否是润年isLeapYear = true;iDay = 28;break;case 3:str += "三";iDay = 31;break;case 4:str += "四";iDay = 30;break;case 5:str += "五";iDay = 31;break;case 6:str += "六";iDay = 30;break;case 7:str += "七";iDay = 31;break;case 8:str += "八";iDay = 31;break;case 9:str += "九";iDay = 30;break;case 10:str += "十";iDay = 31;break;case 11:str += "十一";iDay = 30;break;case 12:str += "十二";iDay = 31;break;}if(isLeapYear){//要计算的为二月,查看是否为润年,如果是加一天 isLeapYear = Year(iYear);if(isLeapYear){iDay++;}}str += "月\n日\0一\0二\0三\0四\0五\0六\n"; System.out.printf(str,iYear);//计算指定月份的第一天是星期几int iWeek = Week(iYear, iMonth, 1);for(int j=0; j<iWeek;j++){StdOut.printf("\0\0\0");}for(int i=1; i<=iDay; i++){if(i>=1&&i<=9)StdOut.printf("\0%d\0",i);if(i>=10&&i<=iDay)StdOut.printf("%d\0",i);if(iWeek == 6 || i==iDay){StdOut.printf("\n");}iWeek++;iWeek %= 7;}}public static int Week(int iYear, int iMonth, int iDay){// 计算指定日期是星期几int iTemp = (14 - iMonth) / 12;int iY = iYear - iTemp;int iM = iMonth + 12 * iTemp -2;int iD = (iDay + iY + iY/4 - iY/100 + iY/400 + 31*iM/12)%7;return iD;}public static boolean Year(int iYear){boolean isLeapYear;isLeapYear = (iYear % 4 == 0);isLeapYear = isLeapYear && (iYear % 100 != 0);isLeapYear = isLeapYear || (iYear % 400 == 0);return isLeapYear;}}时间限制: 3秒内存限制: 64M现代计算机蠕虫病毒传播途径多样化,除了利用移动介质如U盘等传播外,还可以通过邮件、网页挂马、聊天工具、文件传输等多种方式传播,一些病毒甚至可以利用系统的某些漏洞自动进行传播。
中毒的主机会自动搜索可以被感染的主机,并将蠕虫病毒扩散开来。
一台没有安装系统补丁、无安全防护软件的计算机连接到internet上,即使用户不做任何操作,只要网络是通的,在5分钟之内几乎必定会感染上蠕虫病毒。
下图是一个著名的病毒--红色代码在某天内传播感染计算机的情况。
红色代码病毒的传播图各种各样的蠕虫病毒在Internet上进行传播,大量的主机被感染,新的病毒又在不断出现。
这种现象与人类社会所面临的传染病流行的情形类似。
它们都可以用一个简单的数学模型来描述。
式中N是表示所有的可能被感染的群体数量,是已经被感染上病毒的个体所占的比例,K是一个常数,表示在一个时间段内某个病毒携带者(或感染病毒的计算机)能够传染其他的个体数量。
对于一个足够小的时间,新增加的被感染个体数等于已经感染的数量和可被感染的的乘积。