だから私は Project Euler チャレンジをやっていて、最初のチャレンジで立ち往生しています。私は Java を pl として使用しています。たとえば、3 または 5 の倍数である 10 未満の自然数をすべてリストする必要がある場合、3、5、6、および 9 が得られます。これらの倍数の合計は 23 です。 N より 3 または 5 低い。
私のコードは Eclipse で動作しますが、「いい試みですが、このテスト ケースに合格しませんでした」というメッセージが表示されます。with stdout : No Response で、コードを送信すると、すべてのテスト ケースで間違った回答が返されます。コードは次のとおりです。
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);
}
}
更新:だから、私はもっと調べたところ、これがどのように行われるべきかがわかりました:
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);
}
}
今残っている唯一の問題は、すべての数字を読み取ってから合計を表示できるようにしたいということです。今のところ、1 つの数字を読み取り、その直後に合計を表示します。何かアイデアはありますか?