java两个简单的程序实例

本文通过两个简单的Java程序示例来巩固基础,第一个程序探讨了不同类型的浮点数相除的结果,第二个程序用于寻找4位数的吸血鬼数字。所有代码都在notepad中编写,并在CMD环境下编译运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习一门语言的最好方法是使用它。

程序要求说明

这两个程序可以用来巩固java语言基础,暂不涉及class的使用。
程序一:
验证java浮点数相除结果。讨论的除法对象有“有穷正数、有穷负数、+0、-0、+infinite、-infinite、NaN”,我们编程看看它们两两相除会产生什么结果?,

程序二:
找出4位数的所有吸血鬼数字。
解释一下吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,这对数字各包含乘积一半位数的数字,数字选取后可任意排序。例如:1260=21乘以60、1827=21乘以87、2187=27乘以81,都是吸血鬼数字。

程序环境说明:notepad编写,cmd下编译和运行。

第一个程序

1. 编程思路

将七个值放到数组里,然后一个7*7循环遍历完成相除,打印结果即可。注意“有穷正数"和”有穷负数“可以选一个常数来代表,我这里选的是”6.66“和”-6.66“。
另外,为了程序效果,加入一个额外的label数组放置字符串标签,目的是为了打印”有穷正数"和“有穷负数”这两个字符串。

2.代码展示

public class doubleDivision
{
	public static void main(String[] args){
		//与value数组下标一一对应的字符串标签
		String[]label={"有穷正数","有穷负数","+0","-0","Infinity","-Infinity","NaN"};
		//这里我选用6.66代表"有穷正数",-6.66代表"有穷负数"
		double[]value={6.66,-6.66,+0.0,-0.0,Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY,Double.NaN}; 
		
		//两个循环遍历任意两个数之间的除法
		for(int i=0;i<7;i++){
			for(int j=0;j<7;j++){
				if((int)(value[i]/value[j])==1)//由value数组的赋值来看,结果中的‘1’对应"有穷正数"。
					System.out.println(label[i]+" 除以 "+label[j]+" 的结果是: 有穷正数"); 
				else if((int)(value[i]/value[j])==-1)//由value数组的赋值来看,结果中的‘-1’对应"有穷负数"。
					System.out.println(label[i]+" 除以 "+label[j]+" 的结果是: 有穷负数");
				else//其他就不用转化了,直接上值。
				    System.out.println(label[i]+" 除以 "+label[j]+" 的结果是:  "+value[i]/value[j]);
			}
			System.out.println();
		}
	}
}	

3.运行效果

在这里插入图片描述

第二个程序

1. 编程思路

我比较笨,用的是笨办法。
基本思路是:
从1000到9999逐个检测。
每一次检测先提取出个、十、百、千四个位,然后这四个数共有A4 2=12种排列,对这12种排列方式所组成的两个两位数逐一检验,满足要求就打印并跳出内部循环,不满足要求则继续检验直到内部循环跑完。
然而我这里是直接4*3*2=24种排列方式,也就是有一半的冗余,真难过。

2.代码展示

public class vampireDigit
{
	/**********变量说明
	*digit:待检测数。
	*digits[4]:存放检测数的个、十、百、千位。
	*temp1:由digit得到的第一个两位数。
	*temp2:第二个两位数。
	*count:辅助变量,用于提取剩余的两个数字。
	*tempdigits:辅助变量,存放剩余的两个数字。
	*flag:指示待检测数是否为吸血鬼数字,初始置为0。
	*********************/
	public static void main(String[] args){
		int[] digits=new int[4];
		int[] tempdigits=new int[2];
		int temp1,temp2,count,flag;
		
		for(int digit=1000;digit<10000;digit++){
			//这里是提取检测数的四个位。
			digits[0]=digit/1000;
			digits[1]=(digit%1000)/100;
			digits[2]=(digit%100)/10;
			digits[3]=digit%10;
			
			//对于每一个待检测数,都应在检测逻辑开始之前置flag为0。
			flag=0;
			//两个循环,选出digits中的两个数字,且下标不能相等。
		    for(int i=0;i<4;i++){
				for(int j=0;j<4;j++){
					if(j!=i){
						temp1=10*digits[i]+digits[j];//计算temp1。
						
						count=0;
						for(int k=0;k<4;k++)//这里是提取剩余的两个数字,存放到tempdigits中。
                            if(k!=i&&k!=j)
							    tempdigits[count++]=digits[k];
						
						temp2=10*tempdigits[0]+tempdigits[1];//计算temp2。
						if(temp1*temp2==digit){
							System.out.println(digit);
							flag=1;
						}
						
						else{
							temp2=10*tempdigits[1]+tempdigits[0];//tempdigits的第一种排列不满足要求,检测第二种排列。
							if(temp1*temp2==digit){
							      System.out.println(digit);
							      flag=1;
						    }
						}
					}
					if(flag==1)//检测数为吸血鬼数字,跳出内部检测逻辑,检测下一个数。
						break;
				}
				if(flag==1)
					break;
			}
		}
	}
}

3.运行效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值