循环练习题,想不出右边部分怎么实现(同左边第1竖到第7竖一样),发帖求指点。脑子转得不快,老想不出来,郁闷。希各位网友指点一二。谢谢
小弟我不懂英语和拼音,变量暂时用字母表示了。
public class jkl {
public static void main(String[] args) {
int i = 1,k = 1,s = 0;
for(int a = 1; a <= 8; a++){//循环行数
for(int y = 1; y <= 8 - a; y++){//循环每行的空格数,一个数字,和三个空格
System.out.print(" ");
}
for(int t = 1; t <= a; t++){//控制输入数字(左边部分)
if(t == 1){
System.out.print(" " + t);//输出t为1
}else{
s = i * 2;
i = s;
if(i<10){
System.out.print(" " + i);//输出i小于10的数值
}else if(i>=10&&i<100){
System.out.print(" " + i);//输出i小于100的数值
}else{
System.out.print(" " + i);//输出i大于100的数值
}
if(t == a)//重新计算i值
i = k;
}
}
for(int r = a-1; r >= 1; r --){//右边部分的循环,这个循环我想不出来
System.out.print(" " + r);//输出r值
}
System.out.println();//换行
}
}}
小弟我不懂英语和拼音,变量暂时用字母表示了。
public class jkl {
public static void main(String[] args) {
int i = 1,k = 1,s = 0;
for(int a = 1; a <= 8; a++){//循环行数
for(int y = 1; y <= 8 - a; y++){//循环每行的空格数,一个数字,和三个空格
System.out.print(" ");
}
for(int t = 1; t <= a; t++){//控制输入数字(左边部分)
if(t == 1){
System.out.print(" " + t);//输出t为1
}else{
s = i * 2;
i = s;
if(i<10){
System.out.print(" " + i);//输出i小于10的数值
}else if(i>=10&&i<100){
System.out.print(" " + i);//输出i小于100的数值
}else{
System.out.print(" " + i);//输出i大于100的数值
}
if(t == a)//重新计算i值
i = k;
}
}
for(int r = a-1; r >= 1; r --){//右边部分的循环,这个循环我想不出来
System.out.print(" " + r);//输出r值
}
System.out.println();//换行
}
}}
解决方案 »
- 关于java date与win32 filetime格式之间的转换
- TableModle中的数据居中????
- ArrayList与List的内存
- 为什么从内部类中访问局部变量需要被声明为最终类型
- 请教: 为何使用 File file = new File("文件名"); 无法创建文件?
- 如何让JTable的一个单元格进入编辑状态
- SOS 从ArrayList取出对象
- 为什么.ico格式的文件不能在JMenu上显示?难道不支持?
- 我想学习java ,不知道大家都用的什么开发工具。
- 在java中如何实现象windows一样的消息循环
- 高手请进:经典的智力题,用java怎么解啊.....
- 求此题运行顺序
我替你跟改了下:
public class jkl { public static void main(String[] args) { final int k = 1;// 重置值
int s = 0;//
int i = 1;// for (int a = 1; a <= 8; a++) {// 循环行数
for (int b = 1; b < 8 - a + 1; b++) {// 控制形状
System.out.print(" ");
}
for (int t = 1; t <= a; t++) {// 控制输入数字(左边部分)
if (t == 1) {
System.out.print(" " + t);// 输出t为1
} else {
s = i * 2;
i = s;
System.out.print(" " + i);
}
// 确认循环结束,重置i的值
if (t == a)
i = k;
} for (int r = a - 1; r >= 1; r--) {// 右边部分的循环
System.out.print(" " + (int) Math.pow(2, r - 1));// 输出r值
}
System.out.println();
}
}
算法没错,只是数学稍微差了点
public class jkl {
public static void main(String[] args) throws IOException {
String str[] = new String[8];
for(int i=0; i < 8; i++){
for(int j=8;j > i;j-- ){
str[j-1] = getStr(j);
}
}
int length = str[7].length();
for(int i=0; i < 8; i++){
for(int j = 0; j<(length - str[i].length())/2;j++){
System.out.print(" ");
}
System.out.println(str[i]);
}
}
public static String getStr(int j){
int i=0;
String str = "";;
for(i=0; i < j; i++){
int tmp = (int)Math.pow(2,i);
if(tmp < 10){
str += (int)Math.pow(2,i)+" ";
}
else if(tmp >= 10 && tmp < 100){
str += (int)Math.pow(2,i)+" ";
}else{
str += (int)Math.pow(2,i)+" ";
}
}
i -= 1;
while(i > 0){
str += i+" ";
i--;
} return str;
}
}结果是这样的
1
1 2 1
1 2 4 2 1
1 2 4 8 3 2 1
1 2 4 8 16 4 3 2 1
1 2 4 8 16 32 5 4 3 2 1
1 2 4 8 16 32 64 6 5 4 3 2 1
1 2 4 8 16 32 64 128 7 6 5 4 3 2 1 如果用一个空格,结果是这样的,中间那个好像对不齐 1
1 2 1
1 2 4 2 1
1 2 4 8 3 2 1
1 2 4 8 16 4 3 2 1
1 2 4 8 16 32 5 4 3 2 1
1 2 4 8 16 32 64 6 5 4 3 2 1
1 2 4 8 16 32 64 128 7 6 5 4 3 2 1
不知道是不是你要的。