Java打印菱形高效简洁代码
importjava.util.Scanner;publicclass打印菱形{publicstaticvoidmain(String[]args){/**菱形*****...
import java.util.Scanner;
public class 打印菱形 {
public static void main(String[] args) {
/*
* 菱形
*
***
*****
*******
*****
***
*
*/
Scanner inputScanner=new Scanner(System.in);
System.out.print("请输入要打印行数:");
int rows=0;
do{
rows=inputScanner.nextInt();
if(rows%2==0){
System.out.print("请输入奇数:");
}else{
break;
}
}while(true);
int middle=rows/2+1; //得到菱形中间的行号
for(int i=0,k=0;i<rows;i++){ //打印的总行数
if(i<middle){
k++; //打印菱形上面的三角形(包括中间那行)
}else{
k--; //打印菱形下面的三角形(不包括中间那行)
}
for(int j=0;j<middle+k;j++){ //每行打印的空格和星星总数为:菱形中间的行号middle+三角形的行号k
System.out.print(j>middle-k?"*":" "); //前(菱形中间的行号middle-三角形的行号k)的那个格子打印空格,后面的格子打印*号
}
System.out.println(); //打印完一行后换行
}
}
}
问题:有没有比上面代码更高效简洁的打印菱形方法? 展开
public class 打印菱形 {
public static void main(String[] args) {
/*
* 菱形
*
***
*****
*******
*****
***
*
*/
Scanner inputScanner=new Scanner(System.in);
System.out.print("请输入要打印行数:");
int rows=0;
do{
rows=inputScanner.nextInt();
if(rows%2==0){
System.out.print("请输入奇数:");
}else{
break;
}
}while(true);
int middle=rows/2+1; //得到菱形中间的行号
for(int i=0,k=0;i<rows;i++){ //打印的总行数
if(i<middle){
k++; //打印菱形上面的三角形(包括中间那行)
}else{
k--; //打印菱形下面的三角形(不包括中间那行)
}
for(int j=0;j<middle+k;j++){ //每行打印的空格和星星总数为:菱形中间的行号middle+三角形的行号k
System.out.print(j>middle-k?"*":" "); //前(菱形中间的行号middle-三角形的行号k)的那个格子打印空格,后面的格子打印*号
}
System.out.println(); //打印完一行后换行
}
}
}
问题:有没有比上面代码更高效简洁的打印菱形方法? 展开
4个回答
展开全部
public class shu{
public static void main(String[] a){
for(int i=0;i<6;i++){
for(int j=6-i;j>0;j--){
System.out.print(" ");
}
for(int k=1;k<=2*i+1;k++){
System.out.print("*");
}
System.out.println();
}
/*以上是打印了一个上等腰三角形*/
for(int i=6;i>=0;i--){
for(int j=6-i;j>0;j--){
System.out.print(" ");
}
for(int k=1;k<=2*i+1;k++){
System.out.print("*");
}
System.out.println();
}
}
}
只要把for的数据换下 下等腰三角形就出来了,所以原理其实就是打印2个等腰三角形
展开全部
最简单的是N个 输出 语句,完成任务不需要多高超的算法,简洁最重要
追问
那当我要打印1000行的菱形时,不知道是你那种直接输出的写法好还是我的好?
追答
这种,看情况而定啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static void main(String args[]){
java.util.Scanner sc=new java.util.Scanner(System.in);
System.out.println("请输入一个奇数");
int line=sc.nextInt();
while(line%2==0 || line<0){
System.out.println("请重新输入一个奇数");
line=sc.nextInt();
}
print(1,line);
}
public static void print(int n,int line){
if(line%2==0) return ;
if(n>=line){
for(int i=0;i<n;i++){
System.out.print("*");
}
System.out.println();
return ;
}
for(int i=0;i<(line-n)/2.0;i++){
System.out.print(" ");
}
for(int i=0;i<n;i++){
System.out.print("*");
}
System.out.println();
print(n+2,line);
for(int i=0;i<(line-n)/2.0;i++){
System.out.print(" ");
}
for(int i=0;i<n;i++){
System.out.print("*");
}
System.out.println();
}
java.util.Scanner sc=new java.util.Scanner(System.in);
System.out.println("请输入一个奇数");
int line=sc.nextInt();
while(line%2==0 || line<0){
System.out.println("请重新输入一个奇数");
line=sc.nextInt();
}
print(1,line);
}
public static void print(int n,int line){
if(line%2==0) return ;
if(n>=line){
for(int i=0;i<n;i++){
System.out.print("*");
}
System.out.println();
return ;
}
for(int i=0;i<(line-n)/2.0;i++){
System.out.print(" ");
}
for(int i=0;i<n;i++){
System.out.print("*");
}
System.out.println();
print(n+2,line);
for(int i=0;i<(line-n)/2.0;i++){
System.out.print(" ");
}
for(int i=0;i<n;i++){
System.out.print("*");
}
System.out.println();
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2020-11-01
展开全部
//空心都有哦
//我们要知道在中间的那一行的长度是h所以照常理来说如果继续下去是h+1但菱形是少1格的所以h+1後变成h-1的办法是h+1-2所以就多出来这4行
import java.util.Scanner;
public class dai {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
System.out.println("实心:");
rhombus(h);
System.out.println();
System.out.println("空心");
rhombush(h);
System.out.println();
}
public static void rhombus(int h) {
int f = h - h / 2;
for (int i = 1, a = f, b = f; i <= h; i++, a++, b--) {
if (i > f) {
a -= 2;
b += 2;
}
for (int j = 1; j <= a; j++) {
if (j >= b && j <= a) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
public static void rhombush(int h) {
int f = h - h / 2;
for (int i = 1, a = f, b = f; i <= h; i++, a++, b--) {
if (i > f) {
a -= 2;
b += 2;
}
for (int j = 1; j <= a; j++) {
if (j == a || j == b) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
//我们要知道在中间的那一行的长度是h所以照常理来说如果继续下去是h+1但菱形是少1格的所以h+1後变成h-1的办法是h+1-2所以就多出来这4行
import java.util.Scanner;
public class dai {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
System.out.println("实心:");
rhombus(h);
System.out.println();
System.out.println("空心");
rhombush(h);
System.out.println();
}
public static void rhombus(int h) {
int f = h - h / 2;
for (int i = 1, a = f, b = f; i <= h; i++, a++, b--) {
if (i > f) {
a -= 2;
b += 2;
}
for (int j = 1; j <= a; j++) {
if (j >= b && j <= a) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
public static void rhombush(int h) {
int f = h - h / 2;
for (int i = 1, a = f, b = f; i <= h; i++, a++, b--) {
if (i > f) {
a -= 2;
b += 2;
}
for (int j = 1; j <= a; j++) {
if (j == a || j == b) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询