JAVA 求连数相加 随便给出一个整数 算出 给出的这个数 所有 相加起来的数 等于这个数 并且相加的数 要连续起来如: 7+8=15,4+5+6=15,1+2+3+4+5=15 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去看看这个帖子 我的回复 http://topic.csdn.net/u/20091017/17/8e8a4e7d-160c-4cf7-969d-72fb92cfb414.html for(int i=1;i<n;i++){ for(int j=i;j<n;j++) { //sum如果小于则继续累加,大于则表示break了。。等于就可以输出 }} 没有编译器,代码全手写,可能会有点错。思路是从这个数的半数(要向上取整)开始算起,然后逐个往下递减。int end = Math.Ceiling(num);for(int i = end; i>0; i--){ int sum=0; string str=""; for(int j=i; j>0;j--) { sum += j; str += j + "+"; if(sum == num) { System.out.println(str.subString(0,str.length()-1)+"="+num; } else if(sum > num) { break; } }} double num = ?; int end = (int)(Math.ceil(num/2)); for(int i = end; i>0; i--) { int sum=0; String str=""; for(int j=i; j>0;j--) { sum += j; str += j + "+"; if(sum == num) { System.out.println(str.substring(0,str.length()-1)+"="+(int)num); } else if(sum > num) { break; } } }修改了下楼上的 public class Test { public static void main(String[] args) { Test t = new Test(); t.translate(100); } public void translate(int n) { int flag = 0, start = 0, temp = start, end = start; if (n <= 0) { System.out.println("请输入正整数!"); } else { while (start < (n / 2) + 1) { if (temp == n) { System.out.print(temp + "="); for (int i = start; i <= end; i++) { if (i != 0) { if (i != end) { System.out.print(i + "+"); } else { System.out.println(i); } } } start++; flag = 1; end = start + flag; temp += end; } else if (temp > n) { start++; flag = 1; end = start + flag; temp = start; } else { end = start + flag; flag++; temp += end; } } } }} 好像你个题目有bug的,比如16就不可以找连续的整数表示,除非负数也算 如何做一个九九乘法表上线的显示 关于double类型的一个诡异并百思不得其解的问题,还望赐教 JAVA 对于自己的帖子里分数呢 请分析下程序输出结果!!! 有个小问题懂的来解释一下,多谢. 如何写sqlserver2000驱动库的 classpath 请教高手:java.lang.reflect.Method类中的invoke(Object obj, Object[] args)如何理解 如何在JAVA中实现类似VC中sprintf的功能 java中使用URL类,读取服务器上的文件返回的中文为什么是乱码? 创新工厂 笔试 JavaScript怎么把返回的json数据传递给flex组件
{
for(int j=i;j<n;j++)
{
//sum如果小于则继续累加,大于则表示break了。。等于就可以输出
}
}
思路是从这个数的半数(要向上取整)开始算起,然后逐个往下递减。int end = Math.Ceiling(num);
for(int i = end; i>0; i--)
{
int sum=0;
string str="";
for(int j=i; j>0;j--)
{
sum += j;
str += j + "+";
if(sum == num)
{
System.out.println(str.subString(0,str.length()-1)+"="+num;
}
else if(sum > num)
{
break;
}
}
}
double num = ?;
int end = (int)(Math.ceil(num/2));
for(int i = end; i>0; i--)
{
int sum=0;
String str="";
for(int j=i; j>0;j--)
{
sum += j;
str += j + "+";
if(sum == num)
{
System.out.println(str.substring(0,str.length()-1)+"="+(int)num);
}
else if(sum > num)
{
break;
}
}
}修改了下楼上的
t.translate(100); } public void translate(int n) {
int flag = 0, start = 0, temp = start, end = start;
if (n <= 0) {
System.out.println("请输入正整数!");
} else {
while (start < (n / 2) + 1) {
if (temp == n) {
System.out.print(temp + "=");
for (int i = start; i <= end; i++) {
if (i != 0) {
if (i != end) {
System.out.print(i + "+");
} else {
System.out.println(i);
}
}
}
start++;
flag = 1;
end = start + flag;
temp += end;
} else if (temp > n) {
start++;
flag = 1;
end = start + flag;
temp = start;
} else {
end = start + flag;
flag++;
temp += end;
}
}
}
}}