所以我正在做項目歐拉挑戰,我卡在第一個,我用Java作爲PL。例如,如果我們必須列出10以下的所有自然數,它們是3或5的倍數,我們得到3,5,6和9.這些倍數的總和爲23. 我們必須找到所有倍數的總和N爲3或5以下。N以下3或5的所有倍數的總和。項目歐拉
我的代碼適用於Eclipse,但是我得到了「很好的嘗試,但是你沒有通過這個測試用例。」與標準輸出:沒有任何反應,當我提交的代碼我得到的所有測試用例錯誤答案,這裏是代碼:
public class Solution {
public static void main(String[] args) {
for (int j = 0; j < args.length; j++) {
int N = Integer.parseInt(args[j]);
if (Somme(N) != 0) {
System.out.println(Somme(N));
}
}
}
public static int Somme(int Nn) {
int s = 0;
for (int i = 0; i < Nn; i++) {
if (((i % 3) == 0) || ((i % 5) == 0)
&& !(((i % 3) == 0) && ((i % 5) == 0))) {
s = s + i;
}
}
return (s);
}
}
UPDATE: 所以,我看着越來越事實證明,這是它應該如何這樣做:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
int Nbr = Integer.parseInt(line);
for(int j=0; j<Nbr;j++)
{
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
String line2 = br2.readLine();
String[] numbers = new String[Nbr];
numbers[j]= line2;
System.out.println(Somme(Long.parseLong(numbers[j])));
}
}
public static long Somme(long Nn) {
long s = 0;
for (int i = 0; i < Nn; i++) {
if (((i % 3) == 0) || ((i % 5) == 0)) {
s = s + i;
}
}
return (s);
}
}
現在唯一剩下的問題是,我希望它能夠讀取所有的數字後顯示的總和,現在它讀取一個數字和右後顯示的總和它,有什麼想法?
檢查極端情況!如果輸入大於int的大小 – ganeshvjy
我不確定我是否理解你,我是否應該控制用戶輸入? – Hadh
不應該使用標準輸入嗎?不是作爲參數? – Wazaaaap