Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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 计数器的值运行不正常_Java_Arrays - Fatal编程技术网

Java 计数器的值运行不正常

Java 计数器的值运行不正常,java,arrays,Java,Arrays,代码应该是这样工作的: 如果 numValue[]={500100,1,10}和l=4那么它应该执行10-1+100+500。 我已经写了一些书面声明来理解哪里出了问题,但我找不到答案 编辑:应从最后一个数字开始检查,如果下一个数字小于上一个,则应从答案中减去,如果大于,则应添加 void计算(){ for(int i=0;i您的问题是每次在for循环中都要重新启动您的答案值。这应该可以解决您的问题: void calculate() { answer=numValue[l-1];

代码应该是这样工作的: 如果
numValue[]={500100,1,10}
l=4
那么它应该执行10-1+100+500。 我已经写了一些书面声明来理解哪里出了问题,但我找不到答案

编辑:应从最后一个数字开始检查,如果下一个数字小于上一个,则应从
答案中减去,如果大于,则应添加

void计算(){

for(int i=0;i您的问题是每次在for循环中都要重新启动您的答案值。这应该可以解决您的问题:

void calculate() {
    answer=numValue[l-1];
    for(int i=0;i<l-1;i++) {

        int c;
        if(numValue[l-1-i]<numValue[l-i-2]) {
            c=numValue[l-2-i];
            answer+=c;
            System.out.println("+"+c+" Now : "+answer);
        } else {
            c=numValue[l-2-i];
            answer-=c;
            System.out.println("-"+c+" Now : "+answer);
        }
    }
}
void计算(){
答案=数值[l-1];

对于(int i=0;i,因为您使用
answer=numValue[l-1]覆盖每个循环上的答案;
您实际上并不执行上面打印的操作,而是只执行
10+500
。将
answer
的初始化移出循环。

我个人建议在列表上反向循环

void calculate() {
    int i=numValue.length - 1
    sum = numValue[i];
    for(; i > 1; i--) {
        curr = numValue[i];
        System.out.print(curr);
        next = numValue[i-1];
        if (next < curr) {
            System.out.println("- " + next);
            sum -= next;
        } else {
            System.out.println("+ " + next);
            sum += next;
        }
    }
    System.out.println("Result: " + sum);
}
void计算(){
int i=numValue.length-1
总和=数值[i];
对于(;i>1;i--){
curr=数值[i];
系统输出打印(当前);
next=numValue[i-1];
如果(下一个<当前){
System.out.println(“-”+next);
总和-=下一个;
}否则{
System.out.println(“+”+next);
总和+=下一个;
}
}
System.out.println(“结果:+sum”);
}

唯一的问题是,在
for
循环的每次迭代中,您都会覆盖
answer
的值。 下面的代码将修复它:

void calculate() {
answer=numValue[l-1];
for(int i=0;i<l-1;i++) {
    int c;
    if(numValue[l-1-i]<numValue[l-i-2]) {
        c=numValue[l-2-i];
        answer+=c;
        System.out.println("+"+c+" Now : "+answer);
    } else {
        c=numValue[l-2-i];
        answer-=c;
        System.out.println("-"+c+" Now : "+answer);
    }
}
void计算(){
答案=数值[l-1];

对于(int i=0;i到底出了什么问题?我看不出您的需求和代码之间的相关性。。。
void calculate() {
answer=numValue[l-1];
for(int i=0;i<l-1;i++) {
    int c;
    if(numValue[l-1-i]<numValue[l-i-2]) {
        c=numValue[l-2-i];
        answer+=c;
        System.out.println("+"+c+" Now : "+answer);
    } else {
        c=numValue[l-2-i];
        answer-=c;
        System.out.println("-"+c+" Now : "+answer);
    }
}