gpt4 book ai didi

输入一百万时 Java 卡住

转载 作者:行者123 更新时间:2023-11-30 05:51:09 30 4
gpt4 key购买 nike

当我输入一百万作为输入数字时,我的程序卡住了。我该如何解决这个问题?

我尝试将第二个 for 循环分离为第二个函数,但没有成功。

import java.io.*;
public class Array {
public static void main(String[] args) {
String line = System.console().readLine("How many digits of Pi do you want? ");
int n = Integer.parseInt(line);

int columns = (int)(10.0*n/3.0);

int[][] makedigitsofpi = new int[columns][2];
makedigitsofpi[0][0] = 30;
makedigitsofpi[0][1] = 10;
for(int i = 1; i < columns; i++) {
makedigitsofpi[i][0] = i;
makedigitsofpi[i][1] = i*2+1;
}
int[] make2s = new int[columns];
for(int i = 0; i < columns; i++) {
make2s[i] = 2;
}
int[] timesby10 = new int[columns];
int[] thirdrow = new int[columns];
int[] fourrow = new int[columns];
int[] fifthrow = new int[columns];
for(int four_rows = 0; four_rows < n; four_rows++) {
for(int i = 0; i < columns; i++) {
timesby10[i] = make2s[i]*10;
}
for(int column = (columns - 1); column >= 0; column--) {
if(columns == (column + 1)) { //last column
thirdrow[column] = 0; // add last
}
else { // Third Row
int[] cell0 = makedigitsofpi[(column+1)];
int cellfour = fourrow[(column+1)];
int cellfive = fifthrow[(column+1)];
int d = cellfour - cellfive;
thirdrow[column] = (d*cell0[0])/cell0[1];
}
}
}
}
}

我需要我的程序能够处理大量数据。这个计划只是我的项目的开始。该项目是创建一个程序,将 Pi 生成无限位数。

最佳答案

How do I fix this?

在后台线程中完成工作。

您的代码正在运行,处理器正在使用,正在做数学计算。

“卡住”是因为它没有处理您的输入并且没有完成他的工作。

要早点完成工作,请提供较少的类(class)数。

要处理您的输入,您需要在单独的线程中执行这些for循环代码不会执行得更快,但你不会有“卡住”的感觉。如果您有一个启动按钮,在这种情况下,该按钮将被按下并保持按下状态,没有其他输入。

在多线程上下文中,按钮将释放,您可以从“开始”状态切换到“停止”状态,如果再次按下按钮,则设置 boolean 变量值切换:ex shouldCalculate = false; 在 for 循环中,如果检查该值,如果为 false,则退出线程,仅此而已。

请看一下here使用线程。

关于输入一百万时 Java 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53900330/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com