日期:2014-05-20  浏览次数:20944 次

三角形问题
给定一个数,判断是否为n*(n+1)/2,如果是能画出三角形
例如:输入3       ,它是n*(n+1)/2中的一个数,
则画出图形为:
*
*   *
输入10:
*
*   *
*   *   *
*   *   *   *
如果输入4,则输出不是能构成三角形的数。

------解决方案--------------------

import java.io.DataInputStream;
import java.io.IOException;


public class Test {


public static void main(String[] args) throws IOException {
while (true) {
DataInputStream bis = new DataInputStream(System.in);
String s = bis.readLine();
s = s.trim();
if(s.length() == 0) {
continue;
}
int in = 0;
try {
in = Integer.parseInt(s);
} catch (Exception e) {
System.out.println( "输入的不是数字! ");
continue;
}

int mid = (int)Math.sqrt(in * 2);

int level = 0;
if ((mid - 1) * mid / 2 == in) {
level = mid - 1;
}
if (mid * (mid + 1) / 2 == in) {
level = mid;
}
if ((mid + 1) * (mid + 2) / 2 == in) {
level = mid + 1;
}
if (level == 0) {
System.out.println( "输入了不能构成三角形的数! ");
continue;
} else {
for (int i = 0; i < level; i++) {
for (int j = 0; j <= i; j++) {
System.out.print( "* ");
}
System.out.println( " ");
}
}
}
}
}