Java 项目17未知问题

Java 项目17未知问题,java,Java,我刚刚完成的代码,发现我的代码不正确。我找不到代码不起作用的地方。输出一个数字,但在检查答案后,该数字太高。我找不到哪里把代码弄乱了。我感谢你的帮助 public class Euler17 { public static void main(String[] args) { int total = 0; for(int i = 1; i <= 1000; i++ ) { total += letters(i); Syst

我刚刚完成的代码,发现我的代码不正确。我找不到代码不起作用的地方。输出一个数字,但在检查答案后,该数字太高。我找不到哪里把代码弄乱了。我感谢你的帮助

public class Euler17
{
    public static void main(String[] args)
{
    int total = 0;

    for(int i = 1; i <= 1000; i++ )
    {

        total += letters(i);
        System.out.println(i + " " + letters(i));
    }
    System.out.print(total);
}

public static int letters(int i)
{

    if(i >= 1 && i <= 99)
    {
        return tens(i);
    }

    if(i % 100 == 0 && i != 1000)
    {
        return (tens(i / 100) + 7);
    }

    if(i != 1000)
    {
        return hundreds(i);
    }

    if(i == 1000)
    {
        return 11;
    }
    else
    {
        return - 1;
    }

}
public static int hundreds(int i)
{
    int h;
    int t;
    t = i % 100;
    h = (i - t) / 100;
    return ones(h) + 10 + tens(t);
}
public static int tens(int i)
{
    // int t = 0;
    int o;
    o = i % 10;
    // t = (i - o) / 10;
    // find value of i and split into tens and ones
    switch(i)
    {
        case 1:
            return 3;
        case 2:
            return 3;
        case 3:
            return 5;
        case 4:
            return 4;
        case 5:
            return 4;
        case 6:
            return 3;
        case 7:
            return 5;
        case 8:
            return 5;
        case 9:
            return 4;
        case 10:
            return 3;
        case 11:
            return 6;
        case 12:
            return 6;
        case 13:
            return 8;
        case 14:
            return 8;
        case 15:
            return 7;
        case 16:
            return 7;
        case 17:
            return 9;
        case 18:
            return 8;
        case 19:
            return 8;

    }
    if(i >= 20 && i <= 29)
    {
        return 6 + ones(o);
    }
    if(i >= 30 && i <= 39)
    {
        return 6 + ones(o);
    }
    if(i >= 40 && i <= 49)
    {
        return 6 + ones(o);
    }
    if(i >= 50 && i <= 59)
    {
        return 5 + ones(o);
    }
    if(i >= 60 && i <= 69)
    {
        return 5 + ones(o);
    }
    if(i >= 70 && i <= 79)
    {
        return 7 + ones(o);
    }
    if(i >= 80 && i <= 89)
    {
        return 6 + ones(o);
    }
    if(i >= 90 && i <= 99)
    {
        return 6 + ones(o);
    }

    return i;
}
public static int ones(int i)
{

    switch(i)
    {
        case 1:
            return 3;
        case 2:
            return 3;
        case 3:
            return 5;
        case 4:
            return 4;
        case 5:
            return 4;
        case 6:
            return 3;
        case 7:
            return 5;
        case 8:
            return 5;
        case 9:
            return 4;
        case 0:
            return 0;
    }
    return i;
}
}
公共类Euler17
{
公共静态void main(字符串[]args)
{
int-total=0;
对于(int i=1;i=1&&i=20&&i=30&&i=40&&i=50&&i=60&&i=70&&i=80&&i=90&&i
if(i>=40&&i
if(i>=40&&i)
 if(i >= 40 && i <= 49)
{
    return 6 + ones(o);
}