问题描述
今天去面试了写一个程序输出到三角,题目说只能用for循环,我用了while循环,面试关说要用for循环。不会,请问怎么实现?******** ***** *** *
解决方案
我晕怎么这个问题出现了几次呀?我上次也回答过:static void print(int m) { int max = 2*m-1;//正方形边长。 int len = max * max;//正方形中的格子数 int row = 1 ;//行数 int left = 0;//左边起始位置的前一个位置。 int right = max;//右边终止位置 int count = 0;//第row行的星号个数 int total = max* row; for (int i = 1; i <= len; i++) { if(left < i && i <= right ){ System.out.print("*"); } else { System.out.print(" "); } if( i == total) { System.out.println(); ++row; count = (max - ((m+1 -row)*2-1))/2; total = max* row; left = total - max +count;// max * (row-1)+ count; right = total-count; } } } 这儿:http://www.iteye.com/problems/80038#solutions
解决方案二:
引用要不来比比看谁能用最少的代码写出来这个?代码简洁而且效率高,还是效率优先!
解决方案三:
大家都玩上这个题了?这个题,这几天我至少见过3个了要不来比比看谁能用最少的代码写出来这个?
解决方案四:
while循环和for循环其实是等价的,蛋疼的面试官。我索性写了一个比之前自己那个更好的版本:import java.util.Arrays;public class PrintTriangle {/** * @param ch 打印的字符 * @param lines 打印的行数 */public static void print(char ch, int lines) {int n = 2 * lines - 1;char[] str = new char[n];Arrays.fill(str, ch);int index = 0;for (int i = 0; i < lines; i++) {System.out.println(new String(str));str[index] = ' ';str[n - index - 1] = ' ';index++;}}public static void main(String[] args) {print('*', 5);print('#', 7);}}就一层for循环
解决方案五:
其实while循环也行!不过面试官可能考考你数学!呵呵。
解决方案六:
http://www.iteye.com/problems/80034这里就有,我上次回答过,怎么面试都出这样没品位的题目
解决方案七:
class Aa{ public static void main(String[] args) { int z=5; for(int i=0;i<5;i++) { for(int j=0;j<i ;j++) { System.out.print(" "); } for(int k=0;k<z ;k++) { System.out.print("*"); } z--; System.out.println(); } }}
解决方案八:
少次循环,将10改成5
解决方案:
编程实现:.......................................................public class Text1 { public static void main(String[] args) { int i,j; for(i=0;i<10;i++){ for(j=i;j<10;j++){ System.out.print("."); } System.out.println(); } }}
解决方案:
最近看到很多这个题目。。。能说说是哪里题目啊StringBuilder sb=new StringBuilder("*********");for(int i=0;i<5;i++){System.out.println(sb);int n=sb.length()-1;sb.deleteCharAt(n);sb.deleteCharAt(n-1);sb.insert(0,' ');}