实验三 Java语言基础

实验三:Java语言基础

实验目的:

  1. 掌握Java语言的数据类型,熟悉如何定义和使用各种类型。
  2. 掌握Java语言运算符的使用方法。
  3. 了解Java语言中的代码注释与编码规范。
  4. 掌握Java语言顺序结构、选择结构和循环结构程序设计。

实验内容:

  1. 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如:1^3 + 5^3 + 3^3 = 153,所以153是一个水仙花数。请编程输出1000以内的所有的水仙花数。

package Test1;

public class Test1 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

for(int i=0;i<1000;i++)  //列出所有0至999的三位数

{

int a,b,c;

a=i/100;  //找出百位数字

b=i/10-a*10;  //找出十位数字

c=i%10;  //找出个位数字

if(a*a*a+b*b*b+c*c*c==i)  //判断是否是水仙花数

{

System.out.println(i + "是水仙花数");

}

}

}

}

2 .两位数13和62具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变, 即13*62=31*26。 编程序求共有多少对这种性质的两位数(个位与十位相同的不在此列,如11、22,重复出现的不在此列,如 13*62与62*13)。

package Test2;

public class Test2 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

int count=0;

for(int a=10;a<100;a++)  //列出第一个所有的二位数

{

for(int b=10;b<100;b++)  //列出第二个所有的二位数

{

int c,d,e,f;

c=a/10;  //十位数字

d=a%10;  //个位数字

e=b/10;  //十位数字

f=b%10;  //个位数字

if((c*10+d)*(e*10+f)==(d*10+c)*(f*10+e)&&c!=d&&e!=f)  //两数的个位数和十位数对调乘积不变以及个、十位数不相同

{

System.out.println(a+"和"+b);

count++;

}

}

}

System.out.println("一共有" + count/2 + "对");  //统计所有的对数

}

}

3. 验证哥德巴赫猜想。一个充分大的偶数(大于或等于6)可以分解为两个素数之和。 试编程序,将 6至50之间全部偶数表示为两个素数之和。

package Test3;

public class Test3 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

for(int i=6;i<=50;i+=2)  //找出所有6至50的偶数

{

for(int j=2;j<=i/2;j++)  //找出其中一位加数

{

int a;

a=i-j;  //找出另一位加数

if(a%2!=0&&a%3!=0&&a%5!=0&&a%7!=0 && j%2!=0&&j%3!=0&&j%5!=0&&j%7!=0)  //不能被2,3,5,7整除的为素数

{

System.out.println(i + "=" + a + "+" + j);

}

if((a==2||a==3||a==5||a==7) && (j==2||j==3||j==5||j==7))  //2,3,5,7本身为素数

{

System.out.println(i + "=" + a + "+" + j);

}

if((j==2||j==3||j==5||j==7) && a%2!=0&&a%3!=0&&a%5!=0&&a%7!=0)  //当j=2,3,5,7时,找出a

{

System.out.println(i + "=" + a + "+" + j);

}

}

}

}

}

4. 输入1到7之间的某个整数,输出相应的星期:Monday、 Tuesday 等等,用switch语句实现。

package Test4;

import java.util.Scanner;

public class Test4 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Scanner in = new Scanner(System.in);  //输入

int a = in.nextInt();  //输入一个整数

switch(a)

{

case 1:

System.out.println("Monday");

break;

case 2:

System.out.println("Tuesday");

break;

case 3:

System.out.println("Wednesday");

break;

case 4:

System.out.println("Thursday");

break;

case 5:

System.out.println("Friday");

break;

case 6:

System.out.println("Saturday");

break;

case 7:

System.out.println("Sunday");

break;

default:

System.out.println("error");  //排除1至7外的数字

}

}

}

5.一个球从x米(x从键盘录入)高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

package Test5;

import java.util.Scanner;

public class Test5 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Scanner in = new Scanner(System.in);  //输入

float x = in.nextFloat();  //输入一个小数

float s = 0;

float sum = 0;

for(int i=1;i<=10;i++)  //落地次数

{

x=x/2;  //反弹高度

s=x*2;  //重复经过

sum=sum+s;  //总的路程

}

System.out.println("共经过" + sum + "米");

System.out.println("第十次反弹高度:" + x + "米");

}

}

6.可以用整型数的16个二进制位表示16支足球队小组出线的情况,每一位代表一支参赛队,其值为1表示该队出线,其值为0表示该队未能出线。假定从int的第16位由低位向高位分别代表第1队、第2队、第3队……第16队,如果当前表示出线情况的int型值为50083,请输出哪些队获得了出线权?

package Test6;

import java.util.Scanner;

public class Test6 {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Scanner in = new Scanner(System.in);  //输入

int n = in.nextInt();  //输入一个整数n

if((n & 1)==1)

{

System.out.println("第1队出线");

}

if((n & 2)==2)

{

System.out.println("第2队出线");

}

if((n & 4)==4)

{

System.out.println("第3队出线");

}

if((n & 8)==8)

{

System.out.println("第4队出线");

}

if((n & 16)==16)

{

System.out.println("第5队出线");

}

if((n & 32)==32)

{

System.out.println("第6队出线");

}

if((n & 64)==64)

{

System.out.println("第7队出线");

}

if((n & 128)==128)

{

System.out.println("第8队出线");

}

if((n & 256)==256)

{

System.out.println("第9队出线");

}

if((n & 512)==512)

{

System.out.println("第10队出线");

}

if((n & 1024)==1024)

{

System.out.println("第11队出线");

}

if((n & 2048)==2048)

{

System.out.println("第12队出线");

}

if((n & 4096)==4096)

{

System.out.println("第13队出线");

}

if((n & 8192)==8192)

{

System.out.println("第14队出线");

}

if((n & 16384)==16384)

{

System.out.println("第15队出线");

}

if((n & 32768)==32768)

{

System.out.println("第16队出线");

}

}

}

实验小结:

  1. Java的基本数据类型都有固定的长度,引用类型都是用类或对象实现的。
  2. Java对+运算进行了扩展,可作字符串连接运算符。
  3. 做+运算时,如果一个操作数是字符串,其他操作数自动转换成字符串。
  4. “&”按位相与。
  5. Java中大多语法与C语言相同。
  6. 使用输入Scanner时要导入Scanner类。
  7. 素数判断:不能被2,3,5,7整除且为2,3,5,7本身的数为素数。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文文喜欢郭子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值