一个for循环就能打印出一个空心菱形!
public class Testing {public static void main(String[] args) {
for (int i = 1; i <= 7; i++) {
if (i <= 3) {
for (int j = 1; j <= 7; j++) {
if (j == i + 3 || j == 5 - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
} else {
for (int k = 1; k <= 7; k++) {
if (k == i - 3 || k == 11 - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}
System.out.println();
}
}
} --------------------编程问答-------------------- 来学习 --------------------编程问答-------------------- 学习了~ --------------------编程问答-------------------- 一个for循环内嵌了两个for循环还能说出:一个for循环就能打印出一个空心菱形! --------------------编程问答--------------------
System.out.print("空心菱形");
:) --------------------编程问答-------------------- 被骗了哦 --------------------编程问答-------------------- 1个for循环??? --------------------编程问答-------------------- 明显的自欺欺人 --------------------编程问答-------------------- 这是来刷积分的1 --------------------编程问答-------------------- 数了没?你有几个for循环? --------------------编程问答-------------------- LZ哦 我数学不太好啊,几个for啊 --------------------编程问答--------------------
頂 --------------------编程问答-------------------- public class Testing {
static int NUM = 14;
public static void main(String[] args){
int i;
int num = NUM/2;
for(i=0 ;i < NUM*NUM-NUM; ++i){
if((i+1) == ((i+1)/NUM)*NUM +num || (i+1) == ((i+1)/NUM)*NUM+NUM-num)
System.out.print("*");
else
System.out.print(" ");
if((i+1) % NUM == 0 && (i+1)/NUM < NUM/2){
num--;
System.out.println();
}
if((i+1) % NUM == 0 && (i+1)/NUM >= NUM/2){
num++;
System.out.println();
}
}
}
} --------------------编程问答-------------------- 你的这个大括号 也太难看了 对的也太齐了吧 --------------------编程问答-------------------- 挺简单的,调NUM的值改变菱形的大小
public class Testing {
static int NUM = 14;
public static void main(String[] args){
int i;
int num = NUM/2;
for(i=0 ;i < NUM*NUM-NUM; ++i){
if((i+1) == ((i+1)/NUM)*NUM +num || (i+1) == ((i+1)/NUM)*NUM+NUM-num)
System.out.print("*");
else
System.out.print(" ");
if((i+1) % NUM == 0 && (i+1)/NUM < NUM/2){
num--;
System.out.println();
}
if((i+1) % NUM == 0 && (i+1)/NUM >= NUM/2){
num++;
System.out.println();
}
}
}
} --------------------编程问答-------------------- 重新对齐了一下 --------------------编程问答--------------------
程序里是用的制表符,贴上去后给消去了,还得输入空格对齐 --------------------编程问答--------------------
mark --------------------编程问答-------------------- 不用for循环打出空心菱形
--------------------编程问答--------------------
public class Test {
public static void main(String[] args) {
System.out.println(" * ");
System.out.println(" * * ");
System.out.println(" * * ");
System.out.println("* *");
System.out.println("* *");
System.out.println(" * * ");
System.out.println(" * * ");
System.out.println(" * ");
}
}
顶,这才是高手,for循环都不用就打出了空心菱形!!! --------------------编程问答--------------------
囧 --------------------编程问答-------------------- 学习了,4楼和18楼。。。。强悍 --------------------编程问答-------------------- 楼主是个sb,小学数学没学好,装逼 --------------------编程问答-------------------- 楼主是个sb,小学数学没学好,装逼 --------------------编程问答-------------------- 楼主是个sb,小学数学没学好,装逼 --------------------编程问答--------------------
public class Testing {
public static void main(String[] args){
for(int i=1;i<=7;i++){
if(i<=3){
for(int j=1;j<=7;j++){
if (j == i + 3 || j == 5 - i) {
System.out.print("*");
}else{
System.out.print(" ");
}
}
}
else{
for (int k = 1; k <= 7; k++) {
if (k == i - 3 || k == 11 - i) {
System.out.print("*");
}else{
System.out.print(" ");
}
}
}
System.out.println();
}
}
}
对齐下,学习了........... --------------------编程问答-------------------- 这样的代码让你老大看到了不K你才怪
代码复杂度忒高了 --------------------编程问答--------------------
--------------------编程问答-------------------- 来学习了,偶是新手,要是有哪位大虾解释下那就更好了 --------------------编程问答-------------------- 选择代码,再贴上去,就没那么麻烦了。 --------------------编程问答-------------------- 呵呵 mark下 最近欢乐比较多~ --------------------编程问答-------------------- 我可以 很实际的告诉你
public static void main(String[] args) {
print(5);
}
public static void print(int n) {
if(n % 2 == 0) n ++;
int row = 0;
int r = 0;
int col = 0;
for(int i = 0; i < n * n ; i ++) {
if(col == (n/2-r) || col == (n/2+r))
System.out.print("*");
else
System.out.print(" ");
if(++col == n)
col = 0;
if(i + 1 == n * (row+1)) {
System.out.println();
row ++;
if(row <= n/2)
r ++;
else
r --;
}
}
}
你这种代码没有任何实际意义 --------------------编程问答--------------------
这才是高手啊 --------------------编程问答--------------------
public static void main(String[] args) {
int type=0;//0代表打印中部以上,1代表打印中部分,2代表打印下部分
int param=3;//param代表行数
int j=0;
label: for (int i=1; i<2*param-1; i+=2) {
switch (type) {
case 0:
j=0;
do{
System.out.print("*");
j++;
}while(j!=i);
System.out.println();
if(j==param){
type++;
i=0;
continue label;
}
break;
case 1:
j=0;
do{
System.out.print("*");
j++;
}while(j!=2*param-1);
System.out.println();
type++;
i=-1;
continue label;
case 2:
j=2*param-1;
do{
System.out.print("*");
j-=2;
}while(j!=(i*2-3));
System.out.println();
if(j==1)
break label;
default:
break;
}
}
}
有兴趣的可以改下,写的差不多了 --------------------编程问答-------------------- 输出这玩意有意思吗???
--------------------编程问答--------------------
输出结果:
是菱形吗??好像是什么,不知道。
*
***
*****
***
*
--------------------编程问答-------------------- 我说写的差不多了,有兴趣的可以改下 --------------------编程问答-------------------- --------------------编程问答--------------------
图形输出是数、形转换的基础,如果连这些基本的转换都弄不好,上升到三维空间后只可能是一头雾水。
还有楼上的各位,LZ的问题是要输出空心菱形吧……
其实弄清楚菱形边与行数的函数关系其实并不难:
public static void main(String[] args) {
System.out.print("请输入菱形的半轴长(小于11个字符):");
try {
int n = new Scanner(System.in).nextInt();
if (n <= 0 || n > 10) {
System.out.println("输入数据无效!");
return;
}
int num = 2 * n - 1;
for (int i = 0; i < 4 * n * n - 4 * n + 1; i++) {
int row = i / num + 1, col = i % num + 1;
if (col == Math.abs(row - n) + 1
|| num - col == Math.abs(row - n))
System.out.print("*");
else
System.out.print(" ");
if (col == num)
System.out.println();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
另外,在C#下找出了个投机取巧的方法(Java下面还没发现这样的功能):
--------------------编程问答--------------------
static void Main(string[] args)
{
int n;
string temp;
Console.Write("请输入菱形的半轴长(小于11个字符):");
temp = Console.ReadLine();
if (!(int.TryParse(temp, out n)))
{
Console.WriteLine("输入数据至少是个数吧……");
return;
}
if (n <= 0 || n > 10)
{
Console.WriteLine("输入数据无效!");
return;
}
for (int i = 1; i <= 2 * n - 1; i++)
{
int num = Math.Abs(i - n);
Console.Write(new string(' ', num) + '*');
if (num < n - 1)
Console.Write(new string(' ', 2 * (n - num - 1) - 1) + '*');
Console.WriteLine();
}
}
public static void main(String[] args) {
int type=0;//0代表打印中部以上,1代表打印中部分,2代表打印下部分
int param=1;//param代表行数
int j=0;
label: for (int i=1; i<=param; i++) {
switch (type) {
case 0:
j=1;
do{
if(j==param-i-(param/2-1) || j == param/2+i)
System.out.print("*");
else
System.out.print(" ");
j++;
}while(j!=param);
System.out.println();
if(i==param/2){
type++;
i=0;
continue label;
}
break;
case 1:
j=0;
do{
if(j==0 || j==param-1)
System.out.print("*");
else
System.out.print(" ");
j++;
}while(j!=param);
System.out.println();
type++;
i=param/2+1;
continue label;
case 2:
j=1;
do{
if (j == param+param/2 +1- i || j == i- param/2)
System.out.print("*");
else
System.out.print(" ");
j++;
}while(j!=param+1);
System.out.println();
if(i==param)
break label;
default:
break;
}
}
}
写了不能白写,自知不如38楼 --------------------编程问答-------------------- IF(菱形)PRINT(空心)~~~~ --------------------编程问答-------------------- lz果然厉害 果然是三无代码 无信用、无技术、无标准的三无代码 --------------------编程问答-------------------- 倒,我怎么排在38楼这个搞笑的位置…… --------------------编程问答--------------------
--------------------编程问答-------------------- 更正一下,循环的范围要改成size
public static void main(String[] args) throws Exception {
int size = 5;
if (size % 2 == 0) {
size++;
}
int p = size / 2;
for (int i = 0; i < 5; i++) {
byte[] tmp = new byte[size];
if (i <= p) {
tmp[p - i] = '*';
tmp[p + i] = '*';
} else {
tmp[p - (size - 1 - i)] = '*';
tmp[p + (size - 1 - i)] = '*';
}
System.out.println(new String(tmp));
}
}
--------------------编程问答-------------------- 被骗了 --------------------编程问答--------------------
public static void main(String[] args) throws Exception {
int size = 10;
if (size % 2 == 0) {
size++;
}
int p = size / 2;
for (int i = 0; i < size; i++) {
byte[] tmp = new byte[size];
if (i <= p) {
tmp[p - i] = '*';
tmp[p + i] = '*';
} else {
tmp[p - (size - 1 - i)] = '*';
tmp[p + (size - 1 - i)] = '*';
}
System.out.println(new String(tmp));
}
}
思路不错,利用Java会自动初始化数组的特性。 --------------------编程问答-------------------- 擦,写个菱形,switch结构都出来勒,强悍啊 --------------------编程问答--------------------
import java.util.Scanner;
public class Test1
{
public static void main(String[] args)
{
int num = 4;//行数等于num*2+1
for(int y = num;Math.abs(y)<num+1;y--)
{
for(int x=-num;Math.abs(x)<num+1;x++)
{
if(Math.abs(x)+Math.abs(y)==num)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}
}
--------------------编程问答-------------------- --------------------编程问答-------------------- 我是根据坐标轴的对称性写的
--------------------编程问答-------------------- 这种游戏对新手很有帮助啊 --------------------编程问答-------------------- 似乎都很强大啊,呵呵
import java.util.Scanner;
public class Test1
{
public static void main(String[] args)
{
int num = 4; //行数等于num*2+1
for(int y = num;Math.abs(y)<num+1;y--)
{
for(int x=-num;Math.abs(x)<num+1;x++)
{
if(Math.abs(x)+Math.abs(y)==num)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}
}
补充:Java , Java SE