首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java面试 >

三角形有关问题

2012-01-18 
三角形问题给定一个数,判断是否为n*(n+1)/2,如果是能画出三角形例如:输入3,它是n*(n+1)/2中的一个数,则画

三角形问题
给定一个数,判断是否为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( " ");
}
}
}
}
}

热点排行