Java第十版第十章前15题(后面的下一次看有空再发)

本文分享了Java编程学习中,关于第十版教材第十章的前15道习题的内容,略过了第10.2题,详细解答了其他题目。
摘要由CSDN通过智能技术生成
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.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值