第五章习题

例题5.1:编写一个方法,计算一个整数个位数字之和,使用下面方法头:
public static int sumDigits()(long n),例如 sumDigit(234),返回2+3+4=9;
解:
public class test5_1 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);//输入函数
System.out.println(“enter a number”);//提示用户输入
long number=scanner.nextLong();
int sum=sumDigits(number);//调用函数
System.out.println(sum);//输出
}
public static int sumDigits(long number){
///用sumdigit方法求各位数字的和;
int sum=0;
while(true){
sum=sum+number%10;
number=number/10;
if(number0){
break;
}
}
return sum;
}
}
**例题5.2:*判断回文数使用reverse方法实现ispalindrome,如果一个数字的反向倒置数和他原本一样,就是回文数;
则代码如下:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(“enter a number”);
int number=scanner.nextInt();
System.out.println(ispalindrome(number));//调用函数
}
public static int reverse(int number){ / / // 用reverse方法求number的反向倒置数
String s="";
while(true){
s+=number%10;
number/=10;
if(number
0){
break;
}
}
return Integer.parseInt(s);
}
public static boolean ispalindrome(int number){
return reverse(number)==number;
调用reverse函数,如果revers反向倒置数等于number,则就是回文数;
}
例题5.5
打印图形:
1
2 1
3 2 1

… 1
解析:要求输入行数,显示图案。
1.可以看到每一行的数字个数与所在行数相同,
2.最大数字就是行数,且每个数字相差一个数值,
3.每行数字前面的空格数都与行数有关,当前行空格数=总行数 - 当前行数;
则代码如下:
public class test5_5 {
public static void main(String[] args) {
System.out.println(“enter the line:”);
Scanner scanner=new Scanner(System.in);
int i=scanner.nextInt();
displayPattern(i); /调用函数
}public static void displayPattern(int n){
for(int i=1;i<=n;i++){ ///行数
for(int k=1;k<=n-i;k++){ /空格数
System.out.print(" “);
}
for(int j=i;j>=1;j–){ 数字
System.out.print(j+” ");
}
System.out.println();
}
}
例题5.12: 计算三角形面积,提示用户输入三边,得出面积。使用以下两个方法头:
(1)public static boolean isValid(double side1,double side2,double side3)
(2)public static double area( double side1,double side2,double side3)
代码如下:
public class test5_12三角形面积 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println(“enter side1 side2 side3:”);
double side1=scanner.nextDouble();
double side2=scanner.nextDouble();
double side3=scanner.nextDouble();
System.out.println(area(side1,side2,side3));
}
public static boolean isValid(double side1,double side2,double side3){ /判断三遍是否合法
if(side1+side2>side3 && side1+side3>side2 && side2+side3>side1){
return true;
}else{
return false;
}
}
public static double area( double side1,double side2,double side3){ ///根据输入的合法边计算面积
if(isValid( side1, side2, side3)){
double s=(side1+side2+side3)/2;
double area=Math.sqrt(s*(s-side1)(s-side2)(s-side3));
return area;//返回面积
}else{
throw new IllegalArgumentException(“三边非法”);//抛异常
}
}
例题5.14:提示用户输入字符串和一个单独字符,显示该字符在字符串中出现的次数;
代码如下 :
public static void main(String[] args) {
System.out.print(count("fhuik ",‘f’));
}
public static int count(String str,char a){
int count=0;
for(int i=0;i<str.length();i++){ //字符串的遍历
if(str.charAt(i)a){
count++;
}
}
return count;
}
例题5.18: 霉素数,即一个素数可以写成2的p次方-1的形式,求p<=31时的所有霉素数;
public static void main(String[] args) {
for(int p=1;p<=31;p++){
int num=(int)(Math.pow(2,p)-1);//霉素数
if(isSuShu(num)){
System.out.println(p+":"+num);
}
}
}
public static boolean isSuShu(int num) {
boolean flag=true;
for(int i=2;i<=num/2;i++){
if(num%i
0){//素数
flag=false;
break;
}
}
return flag;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值