2015-06-05 32 views
0

我有一个指定的数组。我需要通过while循环来传递它们,并且每次增加或减少顺序都会发生变化,我将Totalrun加1。例如2,3,7都在增加,但是如果数组中的下一个数字小于7,那么它会在运行中加1,以开始新的运行。运行是连续数字的列表,它们或者全部增加(ups)或者全部减少(下降)。有人可以帮我修复这段代码,我是新来的java

public class run { 

    public static void main(String[] args) { 

     boolean prevgrad; 

     int[] number = {2, 3, 7, 4, 5, 1, 12, 14, 9, 28}; 

     int Totalrun = 1; 

     for (int i = 0; i < number.length - 2; i++) { 
      int prevnum = number[i]; 
      int currnum = number[i + 1]; 

      if (currnum > prevnum) { 
       prevgrad = true; 

       if (currnum > prevnum) { 
        if (prevgrad = true) { 
        } else { 
         Totalrun = Totalrun + 1; 
         prevgrad = false; 
         if (currnum < prevnum) { 
          if (prevgrad = false) { 
          } else { 
           Totalrun = Totalrun + 1; 
          } 
          prevgrad = false; 
          break; 
          System.out.println(Totalrun); 
         } 
        } 
       } 
      } 
     } 
    } 
} 

错误:

run.java:30: error: unreachable statement 
         System.out.println(Totalrun); 
         ^
1 error 
+0

“有肯定是有毛病我的代码” - 实际上 - 你不遍历数组(使用一个for循环为)。 'Number.hasNext()'不应该编译... – alfasin

回答

1

我想我明白了,这里不适合你复制,而是从学习。从这里开始,我会强烈建议你去看一些视频,甚至阅读一本关于Java的好书。发布你在stackoverflow上的每一个问题都不会像编写一本好书那样有帮助。

public class Test { 

    public static void main(String args[]) { 
     int[] number = {2,3,7,4,5,1,12,14,9,28}; // 1, 4, -3, 1, -4, 11, 2, -5, 1 <- These are differences from curr - prev 

     int totalRun, incRun = 0, decRun = 0; // Not 1, what if theyre all increasing/decreasing? Run never goes to 1. 

     for (int i = 0; i < number.length - 1; i++) { 
      int prevnum = number[i]; 
      int currnum = number[i+1]; 
      int difference = currnum - prevnum; 
      if (difference > 0) 
       incRun++; 
      else 
       decRun++; 
     } 

     if (number[1] > number[0]) 
      totalRun = incRun; 
     else 
      totalRun = decRun; 

     System.out.println("Total run: " + totalRun); 
    } 
} 
+0

非常感谢@Jurko Guba – Programmer

+0

什么是number.length - 2? – Programmer

+0

很高兴能为您提供帮助,如果这是您寻找或帮助最多的答案,您应该接受它(左侧的选中标记) –

0

你不能以这种方式访问​​数组的值(至少我不知道)。有多种方式可以使用,我个人会在这个例子中使用一个数组for循环。

prevNum = 0; 
for (int currNum: Number) { 
    if (prevNum > currNum) { 
     prevgrad = "up"; 
     ... rest of the code; 
    } 
} 

这样做的原因是在这种类型的for循环中,currNum的值等于任何数组的值是在该迭代。

完整的代码如下:

int prevNum = 0; 
int totalRun = 0; 
for (int currNum: Number) { 
    if (prevNum > currNum) { 
     prevgrad = "up"; 
    } 
    else { 
     totalRun++; 
     prevgrad = "down"; 
    } 
    prevNum = currNum; 
} 
相关问题