想起了一道面试题:根据输入的数字a打印2a-1项的先递增到a项再递减的*行。
2020-02-02 21:54
946 查看
本题代码原创手打,如有雷同,那也只能说:缘,妙不可言!
public class PrintStar {
public static void main(String[] args){
int a=5;
PrintStar p=new PrintStar();
int[] arr=p.getStarNumber(a);
for(int i=0;i<arr.length;i++){
p.printStar(arr[i]);
}
}
public int[] getStarNumber(int a ){//产生保存了每一项上星星数目的数组,数组的值代表第i+1 个元素上(arr[0]==第一位)上应该打印多少个星星
int[] arr=new int[2*a-1];
for(int i=0;i<a;i++){
//如果达到arr[a-1]项 剩下的数组元素按奇数递减,直到最后一位
if((i+1)==a){
for(int j=a-1,m=a;j<2*a-1;j++,i++,m--){
arr[i]=2*(m)-1;
}
}else{
//没有达到数组元素的arr[a-1]项,数组得值以奇数递增
arr[i]=2*(i+1)-1;
}
}
return arr;
}
public void printStar(int a){//打印星星(你给我几个我就打印几个嘞)
StringBuffer s=new StringBuffer();
for(int i=0;i<a;i++){
s.append("*");
}
System.out.println(s);
}
}
面试的时候瞎几把写,回来想想 整理了一下思路。各位看官有没有更简单的写法?
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 黑马程序员之C#编程基础学习笔记:提示用户输入两个整数(假设i1,i2)。如果i1,i2都是正数,则将i2的值递增一个数,然后打印i1+i2的值;如果i1,i2都是负数,则将i1的值递减10个数,然后
- 面试题12:输入数字n,按照顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999
- 面试题82:一句先递增打印再递减打印
- 菜鸟柳(二维数组练习)--根据用户输入的数字输出如下格式:等长、数字从1递增1的螺旋二维数组的 4000
- 根据用户输入数字n打印nn乘法表
- 剑指offer面试题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 递增递减显示数字列表1-10
- 《剑指Offer》面试题:打印出二叉树中结点值的和为输入整数的所有路径
- jQuery动态实现数字递增或递减
- 算法刷题-输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的
- shell脚本编程设计——根据输入的数输出菱形、三角形或者数字金字塔(带闪烁颜色)
- 用最基础方法让用户输入随机数字.顺序打印出输入的每个数字.并计算各个数字之和
- 根据给定的字符char,输出相应的信息。“大写字母,小写字母,数字,特殊字符”!!--“字符的输入”
- java 通过控制台输入的数字打印菱形字母
- 没啥好说的 ,上代码 .按用户输入数字打印一下三角型 如输入行数 掏空版
- 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 【注意: 如果输入的大于了5位数要求用户重新输入】
- 数字排序 键盘输入多个整数,输入quite后结束,把所有的整数倒序排列打印
- 一道面试题所想起的
- jquery数字递增递减
- 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8