实验一 Java开发环境与简单Java程序
一、实验目的
熟悉JDK开发环境
熟练掌握结构化程序设计方法
二、实验内容
1.在此处输入标题打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。
2.编写Java程序,求13-23+33-43+…+973-983+993-1003的值。
3.编程求1!+2!+3!+…+20!。
4.编写Java程序,计算8+88+888+…前10项之和。
5.一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序输出1000以内的所有完数。
6.编写应用程序,输出满足1+2+3+…+n<8888的最大正整数。
7.使用for循环打印下面的图形。
三、实验过程
- 打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身。例如,153是一个“水仙花数”。
实验源码:
package housewor;
public class Shuixianhua {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a, b, c;
for(int i=100;i<999;i++)
{
a=i/100;
b=(i%100)/10;
c=i%10;
if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==i)
{
System.out.println(i);
}
}
}
}
实验结果:
2.编写Java程序,求13-23+33-43+…+973-983+993-1003的值。
实验源码:
public class Demo1 {
public static void main(String[] args) {
int a=0;
for(int i=0;i<100;i++)
{
if(i%2==0)
{
a-=i*10+3; //偶次数前是负号
}
else{
a+=i*10+3;
}
}
System.out.println(a);
}
}
实验结果:
3.编程求1!+2!+3!+…+20!。
实验源码:
public class Demo2 {
public static void main(String[] args) {
int sum=0;
int n=1;
for (int i=1; i<=20 ;i++ ) {
n *= i; //阶乘
sum += n; //累加数值
}
System.out.println(sum);
}
}
实验结果
遇到的问题:
在编译过程中,定义数据类型时,使用int和long显示的结果不同
4.编写Java程序,计算8+88+888+…前10项之和。
实验源码:
public class demo3 {
public static void main(String[] args) {
long a= 8,sum=0;
for(int i=0;i<10;i++)
{
sum+=a; //累加总和
a=a+(a*10); //a+a*10;(a+a*10)*10+a;...
}
System.out.println(sum);
}
}
实验结果:
5.一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序输出1000以内的所有完数。
实验源码:
public class demo4 {
public static void main(String[] args) {
for (int i = 1; i < 1000; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum =sum+ j; //因子数:6=1+2+3
}
}
if (i == sum) {
System.out.println(i);
}
}
}
}
实验结果:
6.编写应用程序,输出满足1+2+3+…+n<8888的最大正整数。
实验源码:
public class Demo5 {
public static void main(String[] args) {
int n=0, sum=0;
for(int i =0;i<1000;i++)
{
sum=sum+n;
n++;
if(sum>8888)
{
break;
}
}
n--;
System.out.println(n-1);
}
}
实验结果:
能输出满足1+2+3+…+n<8888的最大正整数应该是n=132
7.使用for循环打印下面的图形。
实验源码:
public class demo6 {
public static void main(String[] args) {
for( int i=1;i<=5;i++) //先输出空格,再输出*
{
for(int j=0;j<5-i;j++)
{
System.out.print(" "); //从上往下
}
for(int k=1;k<=i;k++)
{
System.out.print("* ");
}
System.out.println();
}
}
}
实验结果:
遇到的问题:写代码的思路是先打空格再打*,出现了问题,后来发现我把j++打成了j--输出一直是个错误,因为想着从上到下,我太难了
实验总结:
在编写代码的过程中会遇到很多问题
1.因为学习基础不扎实,有很多小细节问题需要去百度
2.算法能力还是欠缺的,思路是对的,但是实现起来就要想半天
3.在编译时对语句的使用不熟练
需要去解决:熟练语法,有时间刷刷题,知识点要记牢,不能粗略的阅读