黑马程序员技术交流社区
标题:
分享一个题目
[打印本页]
作者:
宋智超
时间:
2013-7-5 22:08
标题:
分享一个题目
题目:打印一个空心的菱形。
这个题目挺经典的,做法也很多,我选择用二维数组做,好处是代码较短,所嵌套的语句不多,难点在于参数的设置。
代码分享如下:
import java.util.Scanner;
class lingxing1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入要打印拼成菱形上半个三角形的行数,x = ");
int x = input.nextInt();
int n=2*x-1;
char [][] arr = new char[n][n];
for (int h=0;h<n;h++){
for (int l=0;l<n;l++){
int a=h+l;
int b=h-l;
int c=(n-1)/2;
int d=n-1;
if ((a==c)|(a==(c+d))|(b==c)|(b==-c)) {
arr[h][l]='*';
}
else
arr[h][l]=' ';
System.out.print(arr[h][l]);
}
System.out.println();
}
}
}
复制代码
运行结果如下:
2.png
(9.17 KB, 下载次数: 0)
下载附件
2013-7-5 22:07 上传
本人新手,还在学习基础中。
作者:
刘_鑫
时间:
2013-7-5 22:11
class Demo1
{
public static void main(String[] args)
{
printUpStar();
printDownStar();
}
//负责上半部分的换行
public static void printUpStar()
{
for (int x=1;x<=5 ;x++ )
{
printUpSpace(x);
printUpstr(x);
System.out.println();
}
}
//打印上半部分的空格
public static void printUpSpace(int x)
{
for (int y=x;y<5 ;y++ )
{
System.out.print(" ");
}
}
//打印上部分的星号
public static void printUpstr(int x)
{
for (int z=1;z<=x ;z++ )
{
if (z==1 || z==x)
{
System.out.print("* ");
}
else
System.out.print(" ");
}
}
//打印下部分
public static void printDownStar()
{
for (int x=1;x<=5 ;x++ )
{
printDownSpace(x);
printDownStr(x);
System.out.println();
}
}
//打印下部分的空格
public static void printDownSpace(int x)
{
for (int y =1;y<=x ;y++ )
{
System.out.print(" ");
}
}
//打印下部分的星号
public static void printDownStr(int x)
{
for (int z=x;z<5 ; z++)
{
if (z==x || z==4)
{
System.out.print("* ");
}
else
System.out.print(" ");
}
}
}
作者:
longlangcx
时间:
2013-7-6 08:52
其实想要达到“代码较短,所嵌套的语句不多”,输出部分可以只用两层for循环,一个print实现,一个println()就可以简单实现
如果追求再简化,组合使用使用条件表达式甚至可以只用一层for循环,一个print也能实现。{:soso_e100:}
作者:
殷挥笔
时间:
2013-7-6 16:12
public class Demo2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int hangshu = 10;
int yiban = hangshu / 2 + 1;
int yibanduo = hangshu / 2;
System.out.println("空心菱形:");
for(int k = 1;k <= yiban;k++){
for(int i = 1;i <= (yiban - k);i++){
System.out.print(" ");
}
System.out.print("*");
for(int i = 1;i <= ( (k - 2) * 2 + 1);i++){
System.out.print(" ");
}
if(k != 1){
System.out.print("*");
}
System.out.println();
}
for(int k = yibanduo;k >=1;k--){
for(int i = 1;i <= (yiban - k);i++){
System.out.print(" ");
}
System.out.print("*");
for(int i = 1;i <= ( (k - 2) * 2 + 1);i++){
System.out.print(" ");
}
if(k != 1){
System.out.print("*");
}
System.out.println();
}
}
}
复制代码
我是这样的
作者:
殷挥笔
时间:
2013-7-6 16:13
差不多跟你一样的。没有用键盘接受数据而已
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2