2016-02-28 95 views
0
int fnum = Integer.parseInt(split[0]);// holds 5 
    //split[] holds each line of the file. 
    double sum = fnum;// sum = 5 
    double i = 0.0; 
    double last = 0.0; 



    for(int j = 1; j<(split.length-1);j++) 
    { 
     i = Integer.parseInt(split[j].replaceAll("[^0-9]", "")); 

      if(split[j].charAt(0) == '*') 
      { 
       sum = sum * i; 
      } 
      else if(split[j].charAt(0) == '/') 
      { 
       sum = sum/i; 

      } 
      else if(split[j].charAt(0) == '+') 
      { 
       sum = sum + i; 

      } 
      else if(split[j].charAt(0) == '-') 
      { 
       sum = sum - i; 

      } 
      else if(split[j].charAt(0) == '%') 
      { 
       sum = sum % i; 

      } 

    } 
     System.out.println(sum);// Prints 1.0  
    } 
} 
/* 
Actual Data File Imported 

5 
+ 3 
* 7 
+ 10 
* 2 
* 3 
+ 1 
% 11 
Answer should be : 1 
*/ 

好吧我的代碼可能看起來很亂,但我努力了。放棄了幾次,但再次嘗試。我的問題是較小的數據集,例如我在最後幾行導入並註釋了代碼的那些數據集,工作正常。但是對於更大的數據集,這完全是錯誤的,爲什麼呢?我試圖讓我的數據集翻倍以獲得更大的值,但不知怎的,這是錯誤的? 我是迄今爲止的初學者,任何幫助將不勝感激。
爲了更具體地解決我導入文件的問題,我將它全部作爲一個字符串,然後我將它全部添加到一個字符串數組中,因此每行都在字符串數組中,例如split [1]將打印+ 3.之後,我將if循環中的數字和符號隔離在for循環中,以遍歷所有集合。現在if循環捕獲這些符號,然後進行適當的算術運算。 SomeHow它沒有通過?我用了一個double來代替int。這沒有幫助。我相信if語句可能是問題。CodeAbbey挑戰14數據錄入問題?

+1

我認爲你應該看看更好地隔離這個指南的問題:https://stackoverflow.com/help/mcve。 –

+0

我使它更具體,將問題縮小到for-loop – JustForLong

+1

這不是他想到的--Mcve :) – Antoniossss

回答

1

不知道你是否仍然需要答案,但是,這裏有一個提示: 該具體練習的重點在於學習模塊化算術,即如果總結/乘以所有數字的餘數,您將得到與使用給定數字相同的答案,也就是說,如果您將相同的數字應用於所有數字之後。 例如:

14 
+ 78 
* 9 
* 3 
+ 4 
% 3 

所有的應用操作後,在2488 因此2488%以上,3%的結果數3 = 1

所以,如果你申請%3中的每一個數字,包括最初的一個,你會得到相同的答案,用自己的課程餘同樣的操作,並通過3

14 % 3 = 2 
78 % 3 = 0 
9 % 3 = 0 
3 % 3 = 0 
4 % 3 = 1 

所以,再一次將總和,你得到2 + 0 * 0 * 0 + 1相等於1 而1 % 3 = 1這與2488 % 3 = 1相同。

我的觀點是,你應該將模數應用於每一個數字,所以你得到的數字很少,甚至沒有你遇到的大問題。 希望這很清楚,希望它有幫助。

+0

這是一個很大的幫助謝謝你,並重新發現了這個問題。第15次瞭解得更清楚 – JustForLong