2014-11-27 3 views
1

Я делаю программу с использованием Java, которая будет выводить знак зодиака пользователей. Когда я компилирую этот код, он выделяет 0219 и говорит, что «целое число слишком велико». Я новичок, поэтому, если это глупая ошибка, пожалуйста, будь красивой. БлагодаряСлишком большое целое число

System.out.println("Please enter your birthday month and day as a four digit number"); 
    System.out.println("(Ex: 0514 for May 14th):"); 
    double d = key.nextDouble(); 
    if (d >= 0101 && d <= 0120) { 
     System.out.println("You are a Capricorn."); 
    } 
    else if (d >= 0121 && d <= **0219**) { 
     System.out.println("You are an Aquarius."); 
    } 
    else if (d >= 0220 && d <= 0320) { 
     System.out.println("You are a Pisces."); 
    } 
    else if (d >= 0321 && d <= 0420) { 
     System.out.println("You are an Aries."); 
    } 
    else if (d >= 0421 && d <= 0521) { 
     System.out.println("You are a Taurus."); 
    } 
    else if (d >= 0522 && d <= 0621) { 
     System.out.println("You are a Gemini."); 
    } 
    else if (d >= 0622 && d <= 0723) { 
     System.out.println("You are a Cancer."); 
    } 
+1

Префикс целочисленного литерала с 0 заставляет его интерпретироваться как базовое число 8 (восьмеричное). Избавьтесь от ведущих нулей. –

ответ

0

вход Число не сохраняет ведущее значение 0. Если вы введете 0123, а затем распечатать d, вы увидите «123,0»

Просто избавиться от всех ведущих 0s.

Таким образом, вы получите это:

import java.util.Scanner; 
class Untitled { 
    public static void main(String[] args) { 
    System.out.println("Please enter your birthday month and day as a four digit number"); 
    System.out.println("(Ex: 0514 for May 14th):"); 
Scanner key = new Scanner(System.in); 
    double d = key.nextDouble(); 
    if (d >= 101 && d <= 120) { 
     System.out.println("You are a Capricorn."); 
    } 
    else if (d >= 121 && d <= 219) { 
     System.out.println("You are an Aquarius."); 
    } 
    else if (d >= 220 && d <= 320) { 
     System.out.println("You are a Pisces."); 
    } 
    else if (d >= 321 && d <= 420) { 
     System.out.println("You are an Aries."); 
    } 
    else if (d >= 421 && d <= 521) { 
     System.out.println("You are a Taurus."); 
    } 
    else if (d >= 522 && d <= 621) { 
     System.out.println("You are a Gemini."); 
    } 
    else if (d >= 622 && d <= 723) { 
     System.out.println("You are a Cancer."); 
    } 
} 
} 
+0

Спасибо, ребята, сейчас работает. И да, у меня есть строка сканера выше, строки кода, которые я написал, это всего лишь часть моего класса – YaBoiFred

3

Начиная число с 0 означает, что это интерпретируется как восьмеричные, что делает «9» недействительные цифры.

Смежные вопросы