栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

疯狂java讲义第四章习题答案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

疯狂java讲义第四章习题答案

1、使用循环输出九九乘法表。

public class Test
{
     public static void main(String[] args)
     {
             for(int i = 1; i < 10; i++ )
             {
                     for(int j = 1; j <=i; j++)
                     {
                           System.out.print("  "+i +" x "+j+" = "+(i*j));
                           if (i!=j)
                           {
                               System.out.print(",");
                           }
                     }
                     System.out.println("");
             }
       }
}

2、根据给定的层数,使用循环输出等腰三角形。

import java.util.*;
public class Test
{
    public static void main(String[] args)
    {
         Scanner scanner = new Scanner(System.in);
         System.out.println("请输入等腰三角形的层数:");
         int level = scanner.nextInt();//level是等腰三角形的层数
         for(int i=0; i 

3、给定半径输出圆形。
需要注意的是,计算距离中心轴的距离的时候,需要用四舍五入,这样的圆形更好看,还有就是最外层的循环建议采取+2的方式,+1的话将输出一个椭圆

import java.util.*;
public class Test
{
	public static void main(String[] args)
	{
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入圆的半径");
		int radis = scanner.nextInt();
		
		//先打印一个半圆出来
		for(int i = -radis ; i <= radis; i+=2)//以一个字符为单位,
		{
			
			//先计算,每行星号距离中心轴的距离是多少
			//勾股定理:半径的平方减去(半径-i)的平方再开方,
			// 将返回值转换成整型,因为只能打印整数个字符
			//System.out.println("看看具体数据:"+Math.sqrt(Math.pow(radis, 2) - Math.pow(i , 2)));
			int mid = (int) Math.round(Math.sqrt(Math.pow(radis, 2) - Math.pow(i , 2)));//应该使用round来四舍五入,这样才会更好看
			//System.out.println("*距离中间轴的距离:"+mid);
			//然后打印radis - mid个空格
			for(int j = 0; j < radis - mid; j++)
			{
				System.out.print(" ");
			}
			//再打印一个*
			System.out.print("*");
			//在打印两倍的mid个空格
			for(int j = 0 ; j < 2 * mid; j++)
			{
				System.out.print(" ");
			}
			//再打印一个*
			System.out.println("*");
			
		}	

	}
}

4、实现一个按照字节来截取字符串的子串方法。
其实书里的题目没有说的更清楚,所以有两种理解。
其一:如果汉字被截断则将一半的汉字编程char拼接在后面,输出。
其二:来自网上的一个博客,就是web应用为了符合长度限制,所以要按照字节截取,汉字被分割成两半就抛弃掉,不显示。
我感觉其一可能更符合作者的意思。
这里将两种解法都贴上
其一解法

import java.util.*;
public class Test
{
	public static void main(String[] args)
	{
		subString("你好好看abc123",0, 3 );

	}
	public static void subString(String s , int from , int to)
	{
		try
		{
			
			String str = s;
			byte[] bytes = str.getBytes("Unicode");
			//将字符串转化成一个个字节,
			//这样的byte是把不论中文还是英文都解码成两个字节,
			//中文两个字节都有用到,而英文第一个字节都设置为0000000
			//bytes[0]和bytes[1]是标志位,值分别为-2和-1,
			// 所以可以做一个判断,i = 0 ; bytes[i%2 = 0]=0也就是偶数位置为0的话,
			// 就是英文字符,否则是中文字符。而我们截断的话,就是针对开头和结尾
			// 如果开头为偶数的话,就不用管,否则要从下一位开始,之前那一位就用char加在前面
			// 如果结尾是奇数的话就不用管,否则要在前一位就结束,
			int f = 2+from;
			int t = 2+to;
			
			if(f % 2 == 1)
			{
				//如果是开头是奇数
				f +=1 ;
				
			}
			if ( t % 2 == 1)//如果结尾也是奇数,为什么这么检查,因为不包含尾巴这个字符串
			{
				t -= 1;
			}
			System.out.println(f+":"+t);
			
			String temp = new String(bytes, f,t-f,"Unicode");
			if(from % 2==1)
			{
				temp = (char)bytes[from+2] + temp;
			}
			if(to % 2 == 1)
			{
				temp = temp + (char) bytes[to+2];
			}
			System.out.println(temp);
			
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

其二解法

import java.util.*;
public class Test
{
	public static void main(String[] args)
	{
		subString("你好好看abc123",0, 5 );

	}
	public static void subString(String s , int from , int to)
	{
		try
		{
			
			String str = s;
			byte[] bytes = str.getBytes("Unicode");
			//将字符串转化成一个个字节,
			//这样的byte是把不论中文还是英文都解码成两个字节,
			//中文两个字节都有用到,而英文第一个字节都设置为0000000
			//bytes[0]和bytes[1]是标志位,值分别为-2和-1,
			// 所以可以做一个判断,i = 0 ; bytes[i%2 = 0]=0也就是偶数位置为0的话,
			// 就是英文字符,否则是中文字符。而我们截断的话,就是针对开头和结尾
			// 如果开头为偶数的话,就不用管,否则要从下一位开始,之前那一位就用char加在前面
			// 如果结尾是奇数的话就不用管,否则要在前一位就结束,
			int f = 2+from;
			int t = 2+to;
			
			if(f % 2 == 1)
			{
				//如果是开头是奇数,就不要前面那一半了
				f +=1 ;
				
			}
			if ( t % 2 == 1)//如果结尾也是奇数,为什么这么检查,因为不包含尾巴这个字符串
			{
				t -= 1;//就不要后面那一半了
			}
			System.out.println(f+":"+t);
			
			String temp = new String(bytes, f,t-f,"Unicode");
			
			System.out.println(temp);
			
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

5、编写一个程序,将浮点数转换成人民币读法字符串。

6、编写控制台的五子棋游戏。

补充习题
1、使用Arrays中的方法,并记录时间比较普通方法和并行方法之间的时间差距。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号