2014-02-01 10 views
-3

Я хочу преобразовать строковое значение в целое число, но я не могу. Мое заявление провереноКак преобразовать строковое значение в целое число

=Integer.parseInt(input);

имеет ошибку, пожалуйста, помогите и большое спасибо заранее.

import java.util.Scanner; 
public class ass2a 
{ 
    public static void main(String []args) 
    { 
     Scanner reader = new Scanner(System.in); 
     String input,b; 
     long checked; 
     System.out.print("Please enter the 12 digit:"); 
     input = reader.nextLine(); 


     if(input.length() < 12) 
     { 
      System.out.println("The digit is less than 12."); 
     } 

     int one,two,three,four,five,six,seven,eight,nine,ten,eleven,twevle; 
     checked =Integer.parseInt(input); 
     System.out.println(checked); 
    } 
} 
+2

какое сообщение об ошибке – sareeshmnair

+0

прежде всего используйте trim() на вашем входе String .. Затем вы пытаетесь отделить отдельные числа (я думаю), используйте regex/subString/indexOf и т. Д., Чтобы отделить отдельные числа и Integer.parseInt() – TheLostMind

+1

. Охлаждающая вещь с ошибкой что вы можете прочитать их, чтобы понять, в чем проблема, или опубликовать их, если вы не можете их понять. –

ответ

2

Использование checked =Long.parseLong(input); вместо checked =Integer.parseInt(input);

12 цифр номера очень большие и поэтому вы не можете сохранить его в int Так что вам нужно хранить в Long

0

12 цифр номер действительно большой number ... Integer не может его сохранить. Это ошибка, поэтому вам нужен другой тип для хранения номера.

Я рекомендую использовать Long: Long.parseLong (ввод);

Это должно решить проблему.

0

Вы получаете сообщение об ошибке, потому что строковое значение, которое вы указываете как ввод, больше, чем 2147483647. Это максимальный int может хранить (вы можете sysout Integer.MAX_VALUE, чтобы проверить это). Если вы намерены ввести большее количество, может быть, вы можете использовать длинное (максимальное значение 9223372036854775807)

System.out.println(Integer.MAX_VALUE); // =2147483647 (2^31 - 1) 

System.out.println(Long.MAX_VALUE); // =9223372036854775807 (2^63 - 1) 

В зависимости от размера входных данных, вы можете выбрать правильный тип данных.

Для получения дополнительной информации см. http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html.

0

Ваш вопрос эта линия:

input = reader.nextLine(); 

попробовать это:

checked = Long.parseLong(input); 
0

использование

checked= Long.parseLong(input) 

вместо

Integer.parseInt 

он не может обрабатывать 12 цифр длинный номер

0

Вот исправленный программу (при условии, что вы пытаетесь найти ли пользователь-введенное число меньше 12 и отображение числа

import java.util.Scanner; 
public class ass2a 
{ 
public static void main(String []args) 
{ 
    Scanner reader = new Scanner(System.in); 
    long input,b; 
    long checked; 
    System.out.print("Please enter the 12 digit:"); 
    input = reader.nextLong(); 



    if(String.valueOf(input).length() < 12) 
    { 
     System.out.println("The digit is less than 12."); 
    } 
    int one,two,three,four,five,six,seven,eight,nine,ten,eleven,twevle; 
checked =(long)(input); 
     System.out.println(checked); 
     } 
} 
Смежные вопросы