2015-06-05 69 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; 
} 
相關問題