有没有这样一种软件:很多数字,输入一个目标数,自己显示是哪些数字加起来等于这个目标数的?

2025-06-21 15:31:43
推荐回答(1个)
回答1:

有,所以我最喜欢就是回答这种输入目标数,自动列出等式的回答。

不过这个在网上下不到,也没有人无聊做这种软件,只有我这样的无聊程序猿才会自己写一个

所以这个软件一般是自己写自己用。。下面是主要程序代码,你参考下吧^o^

package com.zt.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test9 {
// 构造过程通知方案
Map> map = new HashMap>();

long sss = 0;

public int getCheckNum() {
return checkNum;
}

public void setCheckNum(int checkNum) {
this.checkNum = checkNum;
}

int checkNum = 0;

// 作为一个程序员我无聊的写了个算法来回答这些问题
public static void main(String args[]) {
int[] nums = new int[] {  };

Test9 a = new Test9();
a.setCheckNum();
a.getDataStr(nums);
}

public void ssss(String str) {
char[] cj = str.toCharArray();
// System.out.print(str);
List list = new ArrayList();
for (char c : cj) {
list.add(c + "");
}
long sum = 0;
for (int i = 0; i < list.size() - 1; i++) {

String s = list.get(i);
if (i == 0) {
sum = Long.parseLong(s);
} else {
if (i % 2 == 0) {

} else {
if ("+".equals(s)) {
long n = Long.parseLong(list.get(i + 1));
sum = sum + n;
}
if ("-".equals(s)) {
long n = Long.parseLong(list.get(i + 1));
sum = sum - n;
}
if ("*".equals(s)) {
long n = Long.parseLong(list.get(i + 1));
sum = sum * n;
}
if ("/".equals(s)) {
long n = Long.parseLong(list.get(i + 1));
sum = sum / n;
}
}
}
}
if (this.checkNum == sum) {
System.out.println("++++" + str);
}
}

public void disp(int len) {
List list = map.get(len + "");
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
double d = MathEval.eval(str);
String s = MathEval.doubleTrans1(d);
ssss(str);
if (s.indexOf(".") >= 0) {

} else {
long l = Long.parseLong(s);

if (l == this.checkNum) {

System.out.println("-----" + str + "=" + s);
}
}

// distp(s, str);
// System.out.println(str + "=" + s);
}
}

public void distp(String str, String q) {
if (str.indexOf(".") >= 0) {
str = str.substring(0, str.indexOf("."));
}
if (str.length() == 5 && str.indexOf("-") < 0) {
int ll = Integer.parseInt(str);
if (ll >= 92000 && ll <= 99222)
System.out.println(q + "=" + str);
}
}

public void getDataStr(int[] nums) {
for (int i = 0; i < nums.length; i++) {
if (map.size() != 0) {
operationMap(nums[i], i);
} else {
List list = new ArrayList();
list.add(nums[i] + "");
this.map.put("0", list);
}
}
this.disp(nums.length - 1);
}

public void operationMap(int i, int no) {
String key = (no - 1) + "";
List list = map.get(key);
for (int j = 0; j < list.size(); j++) {
String str = list.get(j);
this.putData(str, i, no + "");
}
}

public void putData(String str, int i, String no) {
List list = null;
if (map.containsKey(no)) {
list = map.get(no);
} else
list = new ArrayList();
list.add((str + "+" + i));
list.add((str + "-" + i));
list.add((str + "*" + i));
list.add((str + "/" + i));
map.put(no, list);
}
}