1
私の質問は、プロジェクトの問題8と関係がある。オイラー:最高の製品を持つ1000桁の数字のうち13桁を見つけてください。この製品の価値は?Javaで正の掛け算から負の数を得る
私のプログラムはこれを解決できるはずだと思いますが、私は奇妙な結果を得ています。デバッグの理由から私は13桁の製品をすべて印刷しました。 1000桁の数字に負の数字がなくても、これらのうちのいくつかは負です。私はかなり長い間このことに固執していました。もし誰かがこれで私を助けることができたら、大いに感謝します。
import java.io.*;
public class Highest13 {
public static void main(String[] args) throws FileNotFoundException {
File input = new File("number1000.txt");
Scanner in = new Scanner(input);
long number = 1L;
long highest = 1L;
char c = '1';
String given = "";
in.useDelimiter("");
while (in.hasNext()) {
given += in.next();
}
for (int i = 0; i < given.length()-12; i++) {
for (int j = 0; j <= 12; j++) {
c = given.charAt(i + j);
number = number * Character.getNumericValue(c);
}
System.out.println(number); //printed for debugging --> gives negative numbers
if (number > highest) {
highest = number;
}
number = 1L;
}
System.out.println(highest);
}
}
負の数値が表示された場合は、13桁の数字を印刷してみてください。 –
BTWは1文字を1つの文字列として一度に読み込み、毎回新しい文字列に追加する*本当に非効率的です。すべての文字に対して2つのStringオブジェクトを作成しています。 1つだけ作成することは可能です。 –
任意の文字が数字でない場合、たとえば、空白または改行 'Character.getNumericValue(c)'は-1を返します。 –