1.简介
介绍几道稍有难度的java实验题,欢迎大家练习讨论
2.整数的各位数字之和
输入一个正整数,计算并输出整数的各位数字之和。
如输入12345,结果显示15,如下图所示。
import java.util.Scanner;
public class Sum{
public static void main(String[] args){
int num, sum=0; // num:输入的整数 sum:位数之和
Scanner scanner=new Scanner(System.in);
num=scanner.nextInt(); // // 输入整数值
while(num!=0){ // 当整数不为0时,循环执行
sum+=num%10; // 利用%每次取最低位并累加给sum
num=num/10; // 利用/在每次取最低位后砍掉最低位
}
System.out.println(sum);
}
}
3.水仙花数判定
输入一个三位数(xxx),输出确认它是否是一个水仙花数。所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数。
例如234不是一个水仙花数。程序运行显示:
import java.util.Scanner;
public class NarcissisticNumber{
public static void main (String[] args){
int num,a,b,c; // num:判定数 a:个位 b: 十位 c:百位
Scanner scanner;
scanner=new Scanner(System.in);
System.out.print("请输入一个三位数:");
num=scanner.nextInt();
a=num%10;
b=num/10%10;
c=num/100;
if(a*a*a+b*b*b+c*c*c==num&num>99&num<1000)
System.out.println(num+"是水仙花数");
else
System.out.println(num+"不是水仙花数");
}
}
4.求整数数组的和、平均值
输入一个整数数组,求数组的和、平均值。
例如输入一个长度为2的数组,程序运行如下:
import java.util.Scanner;
public class ArraySum{
public static void main (String[] args){
int[] a; // 定义整数数组
int n,sum=0; // n:数组元素个数 sum:数组的和
Scanner scanner1;
scanner1=new Scanner(System.in);
System.out.print("请输入数组中元素个数:");
n=scanner1.nextInt();
a=new int[n];
for(int i=0;i<n;i++){
System.out.print("请输入第"+(i+1)+"个元素:");
a[i]=scanner1.nextInt();
sum+=a[i];
}
System.out.println("数组的和为"+sum);
System.out.println("数组的平均值为"+sum*1.0/n);
}
}
5.求pai的近似值
用公式
求
的近似值,直到最后一项绝对值小于给定的精度。
如输入精度
,其计算结果运算如下(计算要求使用double精度):
import java.util.Scanner;
public class ShowPI{
public static void main (String[] args){
int i=1;
int sign =-1;
double PI=0.0, item=0.0;
Scanner scanner1=new Scanner(System.in);
System.out.print("请输入要求的精度值:");
double eps=scanner1.nextDouble();
do {
sign = -sign;
item = 1.0/(2*i-1);
PI += item*sign;
i++;
} while (Math.abs(item)>=eps);
System.out.println(PI*4);
}
}
6.用迭代法求平方根
用迭代法求
。求平方根的迭代公式为
其中x0=a/2。要求前后二次求出的x的差的绝对值小于1.0e-5。
写一个类,其中有二个方法,方法一的功能是用迭代法求平方根;方法二为main方法,输入a之值,并调用方法1,计算显示其平方根。显示结果类似:
import java.util.Scanner;
public class MySqrt {
public static void main(String[] args) {
Scanner scanner1=new Scanner(System.in);
System.out.print("请输入a之值:");
double a=scanner1.nextDouble();
System.out.println(""+a+"的平方根为"+sqrt(a));
}
public static double sqrt(double a) {
double xn = a/2;
while (true) {
double xn1 = 0.5*(xn + a/xn);
if (Math.abs(xn1-xn)<1.0e-5) return xn1;
xn =xn1;
}
}
}