从java中乘以正数得到负数

时间:2016-09-12 15:13:25

标签: java output

我的问题与项目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);
}
}

1 个答案:

答案 0 :(得分:4)

如果任何字符不是数字,例如空格或换行符。CharacterNumericValue(c)返回-1

我建议你在建立你的字符串时删除非数字字符,这样就可以假设存在非字符。