学习java第六天(前三个算法强一点)

今日代码小练习

输出菱形同行同字母

import java.util.*;
public class demo1 {
public static void main(String []args){
	int num=0;
	char ch='A';
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入一个奇数控制你想要的菱形方块的高度");
	num=sc.nextInt();
	for(int i=1;i<=(num+1)/2;i++){
		for(int j=1;j<=(num-(1+(i-1)*2))/2;j++){
			System.out.print(" ");
		}
		for(int h=1;h<=1+(i-1)*2;h++){
			System.out.print((char)(ch+(i-1)));
		}
		System.out.println("");
	}
	
	
	for(int i=(num-1)/2;i>=1;i--){
		for(int j=1;j<=(num-(1+(i-1)*2))/2;j++){
			System.out.print(" ");
		}
		for(int h=1;h<=1+(i-1)*2;h++){
			System.out.print((char)(ch+(i-1)));
		}
		System.out.println("");
	}
}
}

真是费了我老鼻子劲了,这段代码最核心的地方就是i与j、h之间的关系。具体可以参考我的代码。

请输入一个奇数控制你想要的菱形方块的高度
5
  A
 BBB
CCCCC
 BBB
  A

输出三角形同行自增自减字母

import java.util.*;
public class demo1 {
public static void main(String []args){
	int num=0;
	char ch='A';
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入一个奇数控制你想要的三角形方块的高度");
	num=sc.nextInt();
	for(int i=1;i<=(num+1)/2;i++){
		for(int j=1;j<=(num-(1+(i-1)*2))/2;j++){
			System.out.print(" ");
		}
		for(int h=1;h<=1+(i-1);h++){
			System.out.print((char)(ch+(h-1)));
		}
		for(int h=i-1;h>=1;h--){
			System.out.print((char)(ch+h-1));
		}
		System.out.println("");
	}
	
}
}

这一段的难度在于分布式输出大写字母,但是道理和上面的公式大同小异

输出菱形同行自增自减字母

import java.util.*;
public class demo1 {
public static void main(String []args){
	int num=0;
	char ch='A';
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入一个奇数控制你想要的三角形方块的高度");
	num=sc.nextInt();
	for(int i=1;i<=(num+1)/2;i++){
		for(int j=1;j<=(num-(1+(i-1)*2))/2;j++){
			System.out.print(" ");
		}
		for(int h=1;h<=1+(i-1);h++){
			System.out.print((char)(ch+(h-1)));
		}
		for(int h=i-1;h>=1;h--){
			System.out.print((char)(ch+h-1));
		}
		System.out.println("");
	}
	
	
	for(int i=(num-1)/2;i>=1;i--){
		for(int j=1;j<=(num-(1+(i-1)*2))/2;j++){
			System.out.print(" ");
		}
		for(int h=1;h<=1+(i-1);h++){
			System.out.print((char)(ch+(h-1)));
		}
		for(int h=i-1;h>=1;h--){
			System.out.print((char)(ch+h-1));
		}
		System.out.println("");
	}
}
}

这个代码就是集大成之作,但是我还是没有优化好,我的初值设置为了1,难度上升,运算增加,但是我不想改动了,改了之后的麻烦程度想想就可怕。

将一个正整数进行分解质因数操作 例如: 输入90 结果 2x3x3x5完成方法封装

import java.util.*;
public class demo1 {
    public static void main(String[] args) {
    	Scanner sc=new Scanner(System.in);
    	int num=sc.nextInt();
    	System,out,println("请输入一个正整数");
        f(num);
    }
    private static void f(int num) {
        for (int i = 2; i < num; i++) {
            while (num % i == 0) {
                System.out.print(i+"*");
                num = num / i;
            }
        }
        if (num > 1) {
            System.out.print(num);
        }
    }
}
请输入一个正整数
90
2*3*3*5

这个还算是经典的算法,封装了一个函数。

利用循环完成15的阶乘完成方法封装

import java.util.*;
public class demo1 {
    public static void main(String[] args) {
    	System.out.println("请输入一个正整数来算阶乘");
    	Scanner sc=new Scanner(System.in);
    	int num=sc.nextInt();
        f(num);
    }
    private static void f(int num) {
     int number=1;
     for(int i=1;i<=num;i++){
    	 number=i*number;
     }
     System.out.printf(num+"的阶乘为:"+number);
}
}

简简单单今天的任务就是这些了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值