Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的整数值在倒计时中设置为5时为零_Java_Android_Arrays - Fatal编程技术网

Java 为什么我的整数值在倒计时中设置为5时为零

Java 为什么我的整数值在倒计时中设置为5时为零,java,android,arrays,Java,Android,Arrays,在下面的代码中,我有一个名为ship1的整数,它的值在倒计时对象中设置为5。我想把这个int值放到一个字符串数组中,但是当我这样做时,当我把字符串数组的第一行打印到文本视图中时,ship1AddSpend这个整数显示为零。为什么数值没有变为5?有人能帮忙吗 final TimerClass Timer2 = (TimerClass) new TimerClass(500,1000) { final public int OnFinish() { ship1Add

在下面的代码中,我有一个名为ship1的整数,它的值在倒计时对象中设置为5。我想把这个int值放到一个字符串数组中,但是当我这样做时,当我把字符串数组的第一行打印到文本视图中时,ship1AddSpend这个整数显示为零。为什么数值没有变为5?有人能帮忙吗

final TimerClass Timer2 = (TimerClass) new TimerClass(500,1000) {

    final public int OnFinish()
    {
        ship1AddSpend = 5;
        this.start();
        return ship1AddSpend;
    }

}.start();

int ship1AddSpend;

        final String[] shipDesc = {
                "10 Planets Every 5 Secs \n" + ship1AddSpend + "$",
                "50 Planets Every 5 Secs \n",
                "100 Planets Every 5 Secs \n 1500$",
                "500 Planets Every 4 Secs \n 3000$",
                "1000 Planets Every 4 Secs \n 7500$",
                "5000 Planets Every 4 Secs \n 15000$",
                "10000 Planets Every 3 Secs \n 50000$",
                "30000 Planets Every 3 Secs \n 100000$",
                "60000 Planets Every 3 Secs \n  500000$",
                "100000 Planets Every 1 Secs \n 1000000$"};

将int shipAddSpend移到up将解决您的问题

int ship1AddSpend;

final TimerClass Timer2 = (TimerClass) new TimerClass(500,1000) {

final public int OnFinish()
{
    ship1AddSpend = 5;
    this.start();
    return ship1AddSpend;
}

}.start();



    final String[] shipDesc = {
            "10 Planets Every 5 Secs \n" + ship1AddSpend + "$",
            "50 Planets Every 5 Secs \n",
            "100 Planets Every 5 Secs \n 1500$",
            "500 Planets Every 4 Secs \n 3000$",
            "1000 Planets Every 4 Secs \n 7500$",
            "5000 Planets Every 4 Secs \n 15000$",
            "10000 Planets Every 3 Secs \n 50000$",
            "30000 Planets Every 3 Secs \n 100000$",
            "60000 Planets Every 3 Secs \n  500000$",
            "100000 Planets Every 1 Secs \n 1000000$"};

仅当计时器完成时,您才设置SHIP1ADDSPUND值。您还需要给它一个初始值,如:

int ship1AddSpend = 5;

当然,您是在计时器完成之前读取该值。只有在OnFinish执行后才能阅读。

不,不会,此移动对代码行为没有任何影响,变量仍然具有相同的作用域。如果将变量声明为volatile int,会发生什么情况?为什么在24小时内针对同一问题发布了两篇文章?因为第一篇没有得到回答,这不起作用。我将整数设置为3,但当计时器结束时,它仍然没有更新为5。您必须发布更多代码。您当前的代码片段太短,无法理解您想要实现的目标。那么,如何在计时器完成后使字符串成为值?您的代码正常。但是你应该在一个更好的时间执行它。