我的问题与项目Euler的问题8有关:找到1000位数字中具有最大产品的13个相邻数字。这个产品有什么价值?
我认为我的程序应该能够解决这个问题,但我会一直得到奇怪的结果。出于调试原因,我打印出每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);
}
}
答案 0 :(得分:4)
如果任何字符不是数字,例如空格或换行符。CharacterNumericValue(c)返回-1
我建议你在建立你的字符串时删除非数字字符,这样就可以假设存在非字符。