package demo;
public class Exercise10_1时间类 {
public static void main(String[] args) {
/*
* 表示时间的数据域hour、minute和second
* 一个以当前时间创建Time对象的无参构造方法(数据域的值表示当前时间)
* 一个构造Time对象的构造方法,这个对象有一个特定的时间值,这个值是以毫秒表示的,
* 从GMT到现在流逝的时间段,数据域的值表示这个时间
* 一个构造带特定的小时、分钟和秒的Time对象的构造方法
* 三个数据域hour、minute和second各自的get方法
* 一个名为setTime(long elapseTime)的方法使用流失的时间给对象设置新时间,
* e.g. 555550000毫秒转换为10小时10分钟10秒
* 两个对象Time()Time(555550000)显示是他们的小时分钟和秒
*/
Time t1=new Time();
Time t2=new Time(555550000);
System.out.println("t1: hour: "+t1.gethour()+"/h "+"minute: "
+t1.getminute()+"/m "+t1.getsecond()+"/s");
t2.setTime(555550000);
}
}
class Time{
int hour;
int minute;
int second;
Time(){
hour=21;
minute=53;
second=34;
}//无参构造对象
Time(long time){
time=System.currentTimeMillis();
}
Time(int hour,int minute,int second){
this.hour=hour;
this.minute=minute;
this.second=second;
}
int gethour() {
return hour;
}
int getminute() {
return minute;
}
int getsecond() {
return second;
}
void setTime(long elapseTime) {
second=(int)elapseTime/1000;//以秒为基本单位
hour=second/3600%24;//秒转化为小时,注意要将天数部分去掉
minute=second%60%60;
second=second%60;
System.out.println("t2: hour: "+gethour()+"/h "+"minute: "+getminute()+"/m "+getsecond()+"/s");
}
}
10.2题略过
package demo;
import java.util.*;
public class Exercise10_3MyInteger类{
public static void main(String[] args) {
/*
* 设计一个名为MyInteger的类,这个类包括
* 一个名为value的int型数据域,存储这个对象表示的int值
* 一个为指定的int值创建MyInteger对象的构造方法
* 一个返回int值的get方法
* 如果值分别是偶数、奇数或素数,那么isEven()、isOdd()和isPrime()方法都会返回true
* 如果指定值分别是偶数、奇数或素数,那么相应的静态方法isEven(MyInteger)、isOdd(MyInteger)
* 和isPrime(MyInteger)会返回true。
* 如果该对象的值与指定的值相等,那么equals(int)和equals(MyInteger)方法返回true
* 静态方法parseInt(char[])将数字构成的数组转换为一个int值
* 静态方法parseInt(String)将一个字符串转换为一个int值
*/
Scanner input=new Scanner(System.in);
int x=input.nextInt();
MyInteger number1=new MyInteger(x);
MyInteger number2=new MyInteger(10);
System.out.println(number1.isEven());
System.out.println(number2.isPrime());
}
}
class MyInteger {
int value;
MyInteger(int value){
this.value=value;
}
int getInteger() {
return value;
}
boolean isEven() {
return value%2==0?true:false;
//return value%2==0;
}
boolean isOdd() {
return value%2==0?false:true;
//return value%2!=0;
}
boolean isPrime() {
boolean is=true;
for (int i = 2; i*i < value; i++) {
if(value%i==0) {
is=false;break;
}
}
return is;
}
public static boolean isEven(int number) {
return number%2==0?true:false;
}
public static boolean isOdd(int number) {
return number%2==0?false:true;
}
public static boolean isPrime(int number) {
boolean is=true;
for (int i = 2; i*i < number; i++) {
if(number%i==0) {
is=false;break;
}
}
return is;
}
public boolean equals(int number) {
return this.value==number;
}
public boolean equals(MyInteger number) {
return this.value==number.getInteger();
}
public static int parseInt(char[] string) {
return Integer.parseInt(string.toString());
}
public static int parseIne(String string) {
return Integer.parseInt(string);
}
}
package demo;
/*
* 设计一个名为MyPoint的类,表示一个带x坐标和y坐标的点
* 两个带get的方法的数据域x和y分别表示他们的坐标
* 一个创建点(0,0)的无参构造方法
* 一个创建特定坐标点的构造方法
* 一个名为distance1的方法,返回从该点到MyPoint类型的指定点之间的距离
* 一个名distance2的方法,返回从该点到指定X和Y坐标的指定点之间的距离
* 创建两个点(0,0)和(10,30.5)
*/
public class Exercise10_4MyPoint类 {
public static void main(String[] args) {
MyPoint p1=new MyPoint();
MyPoint p2=new MyPoint(10,30.5);
System.out.println("the distance from p1 to p2 is: " + p1.distance1(p2));
}
}
class MyPoint{
double x;
double y;
MyPoint(){
x=0;
y=0;
}
MyPoint(double x,double y){
this.x=x;
this.y=y;
}
double getXPoint() {
return x;
}
double getYPoint() {
return y;
}
double distance1(MyPoint p) {
return Math.sqrt(Math.pow(this.x-p.x, 2)+Math.pow(this.y-p.y, 2));
}
double distance2(double x,double y) {
return Math.sqrt(Math.pow(this.x-x, 2)+Math.pow(this.y-y, 2));
}
}
package demo;
import java.util.Scanner;
public class Exercise10_5显示素数因子 {
public static void main(String[] args) {
/*
* 用户输入一个正整数,然后以降序输出它的所有最小因子(这里题目没描述清楚,如果输入的数本身就是素数呢?) e.g. input 120 output
* 2、2、2、3、 用StackOfIntegers倒序输出这些因子
*/
Scanner input = new Scanner(System.in);
System.out.println("请输入一个正整数,我来帮你倒序输出它的所有因子!");
int n = input.nextInt();
method(n);
}
// 获取因子
public static void method(int n) {
StackOfIntegers stack = new StackOfIntegers();
int temp = n;// 记录原始的n的值
while (n != 0) {
for (int i = 2; i < temp / 2;) {
// 上限应该不是n,没那么大,n/2应该足够了
if (n % i == 0) {
stack.push(i);// 最小因子i加入到集合中去
n = n / i;
} else {
i++;
}
while (!stack.empty())
System.out.print(stack.pop() + " ");
}
} // 这个类运行完了好像不会自动停止。。。。
/*
* Set<Integer> number = new HashSet<Integer>();// 创建集合存储数据,可以不同考虑容量问题 //
* 或者建立一个比较大的数组也行 while (n != 0) { for (int i = 2; i < n / 2;) {//
* 上限应该不是n,没那么大,n/2应该足够了 if (n % i == 0) { number.add(i);// 最小因子i加入到集合中去 n = n /
* i; } else { i++; } } } // 这里涉及类型转换,因为集合转成的数组对应的是Object类型的,不能直接和int类型的数组作用
* Object[] divisor1 = number.toArray(); int[] divisor2 = new
* int[divisor1.length]; for (int i = 0; i < divisor2.length; i++) { divisor2[i]
* = (int) divisor1[i]; }
*/
}
}
``
```java
package demo;
import java.util.Scanner;
public class Exercise10_6显示素数 {
public static void main(String[] args) {
/*
* 显示120以内的素数 用StackOfIntegers倒序输出这些素数
*/
Scanner input = new Scanner(System.in);
System.out.println("请输入一个上限,我来输出它以内的所有素数(e.g. 120)");
int limit = input.nextInt();
method(limit);
}
public static void method(int n) {
StackOfIntegers stack = new StackOfIntegers();
int number = 2;
while (number <= n) {
boolean isPrine = true;
for (int divisor = 2; divisor <= number / 2; divisor++) {
if (number % divisor == 0) {
isPrine = false;
break;
}
}
if (isPrine) {
stack.push(number);
}
number++;
}
while (!stack.empty()) {
System.out.print(stack.pop() + " ");
}
}
}
package pi;
/*
* 使用9.7的Account类。创建一个有十个账户的id数组(0~9),并初始化收支为100
* 系统提示用户输入一个id,如果输入的id不正确,就提示用户重新输入正确的id。一旦接受一个id 就显示主菜单>>1 查看当前收支 2 表示取钱 3 存钱
* 4退出主菜单 一旦退出,系统就会提示再次输入id。所以,系统一旦启动就不会停止
*/
import java.