零基础计算机专业生一生要强的JAVA之路(2):2022.09.23实验三记录

这里是计算机专业大二学生小文,记录一下自己学习java的辛酸过往。

1.判断下列类型转换是否允许,如果允许,求出转换结果,如果不可以,写出 原因。意查看编译提示错误信息

写了一个很简单的代码来进行转换,emmm其实大体就是看能不能输出,这部分没什么技术含量,但不妨碍我写下来自娱自乐(菜鸡本人)

public class test {

	public static void main(String[] args) {
		char c='A';    // typeA a=***
        int i=(int)c;    //typeB b=(typeB)a
		System.out.println(b);// TODO Auto-generated method stub
	}

}

char c = 'A';        int i = (int)c ;

可以完成转换,A被转换成了65

boolean b =false;        int i = (int)b;

无法完成转换,出现运行错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

Cannot cast from boolean to int

at transform/transform.test.main(test.java:7)

float f = 1000.34f;        int i = f;

无法完成转换,出现运行错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

Type mismatch: cannot convert from float to int

at transform/transform.test.main(test.java:7)

long l = 100;        int i = l;

无法完成转换,出现运行错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

Type mismatch: cannot convert from long to int

at transform/transform.test.main(test.java:7)

double d = 1000.34;        int i = (int)d;

可以完成转换,1000.34被转换成了1000

int i = 97;        char c = (char)i;

可以完成转换,97被转换成了字符a

int i = 1000;        boolean b = (boolean) i;

无法完成转换,出现错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

Cannot cast from int to boolean

at transform/transform.test.main(test.java:7)

2.编写程序查看基本数据类型的取值范围

简单粘个代码:

public class test {

	public static void main(String[] args) {
		System.out.println("byte:"+Byte.MIN_VALUE+"-"+Byte.MAX_VALUE);
		System.out.println("short:"+Short.MIN_VALUE+"-"+Short.MAX_VALUE);
		System.out.println("int:"+Integer.MIN_VALUE+"-"+Integer.MAX_VALUE);
		System.out.println("long:"+Long.MIN_VALUE+"-"+Long.MAX_VALUE);
		System.out.println("float:"+Float.MIN_VALUE+"-"+Float.MAX_VALUE);
		System.out.println("double:"+Double.MIN_VALUE+"-"+Double.MAX_VALUE);
		// TODO Auto-generated method stub
	}
}

运行结果:

 学到了两个新方法,此外没什么需要说的(一整个开摆)

3.编写程序,求 10000 以内的完全数。

提示:完全数是所有因子之和(包括 1 但不包括自身) 等于该数自身的数,  

6 是完全数,因为 6=1*2*3  6=1+2+3*

依旧先粘个代码:

public class IsPerfect {
	public static void main(String[] args) {
		for(int i=1;i<=10000;i++) {
			int count=0;
			for(int j=1;j<i;j++) {
				if(i%j==0) {
					count+=j;
				}
			}
			if(i==count) {
				System.out.println(i+"是一个完全数\n");
			}
		}
		// TODO Auto-generated method stub
	}
}

最开始我把int count=0;这一行代码放在了for循环外边,结果发现一直运行不出来,大约有点运行超时的感觉(迷茫.jpg)

放进for循环里就好了(神奇.gif)

(如果有好心人刷到了指点一下迷津拜托拜托)

放个运行结果:

做题目:

  1.  16/8  16*8 效率最高的算法。

一个小知识:在系统中,运算是以二进制形式进行的。移位运算是最高效率、最节省内存的计算方法

一个数左移(<<)一位相当于将自身乘以2,右移(>>)一位则相当于将自身除以2。

代码:

public class Shift {

	public static void main(String[] args) {
		int a,b;
		a=16>>3;
		b=16<<3;
		System.out.print("16/8="+a+",16*8="+b);
		// TODO Auto-generated method stub
	}

}

2、编写程序,生成并输出 10  50- 100 之间的随机数

此题没什么难度,直接上代码。

我是选择了将生成的数据存储在数组里,但题目并没有明确要求,不使用数组也可以直接将生成的随机数输出。

public class RandomTest {

	public static void main(String[] args) {
		int a[]=new int[10];
		for(int i=0;i<10;i++) {
			a[i]=(int)(Math.random()*50+50);
			System.out.println(a[i]+"\t");
		}
		// TODO Auto-generated method stub

	}

}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值