import java.io.*;
import java.util.ArrayList;
public class Ristsumma {
static long numberFromFile;
static long sum1, sum2;
static long number, number2;
static long variable, variable2;
static long counter;
public static void main(String args[]) throws IOException{
try{
BufferedReader br = new BufferedReader(new FileReader("ristsis.txt"));
numberFromFile = Long.parseLong(br.readLine());
br.close();
}catch(Exception e){
e.printStackTrace();
}
variable=numberFromFile;
ArrayList<Long> numbers = new ArrayList<Long>();
while (variable > 0){
number = variable %10;
variable/=10;
numbers.add(number);
}
for (int i=0; i< numbers.size(); i++) {
sum1 += numbers.get(i);
}
ArrayList<Long> numbers2 = new ArrayList<Long>();
for(long s=1; s<numberFromFile; s++){
variable2=s;
number2=0;
sum2=0;
while (variable2 > 0){
number2 = variable2 %10;
variable2/=10;
numbers2.add(number2);
}
for (int i=0; i< numbers2.size(); i++) {
sum2 += numbers2.get(i);
}
if(sum1==sum2){
counter+=1;
}
numbers2.clear();
}
PrintWriter pw = new PrintWriter("ristval.txt", "UTF-8");
pw.println(counter);
pw.close();
}
}
所以我有这个代码。它从文件中获取一个数字,将所有数字与该数字分开相加,然后将它们相加(例如,数字是 123,则它给出 1+2+3=6)。在后半部分,它会查看文件中从 1 到该数字的所有数字,并计算有多少不同的数字给出相同的答案。如果数字是 123,总和是 6,代码写出的答案是 9(因为 6、15、24、33、42、51、60、105、114 也给出了相同的答案)。该代码有效,但我的问题是,当文件中的数字例如为 2 222 222 222 时,需要将近半个小时才能得到答案。我怎样才能让它运行得更快?