2014-01-27 3 views
1
public static int toInt(Object a) 
{ 
    return (int) a; 
} 

public static Object tInput() 
{ 
    return read.nextLine(); 
} 

Когда я пытаюсьКак отличить объект от int методом?

public static void main (String []args) 
{ 
    System.out.println(toInt(tInput())); 
} 

я получаю исключение в класс произнесения - Даже если я вхожу в цифрах !!! Интс!

Я не знаю, что я делаю неправильно. может ли кто-нибудь помочь?

==== РЕДАКТИРОВАНИЕ ====
Люди говорят, что я не могу использовать его, потому что это строка.
Я пробовал этот другой метод, и это работает.
Может кто-нибудь объяснить?

public static void check() 
{ 
    Object h = 2014; 
    int a = (int) h; 
    System.out.println(a); 
} 
+0

Что такое 'read' и что возвращает' nextLine'? – rgettman

+1

Причина, по которой код в вашем редактировании работает, потому что тип времени выполнения объекта, хранящегося в 'h', является' int'. Ссылка, которую вы используете для ссылки на нее, 'h', является ссылкой, которая может содержать любой« объект ». Поскольку вы присваиваете ему значение 'int', вы можете передать его в' int' без проблем, потому что вы вводите 'int' в' int'. Если вместо этого вы делаете 'Object h =" Привет мама! "; int a = (int) h; ', тогда вы получите исключение класса, потому что вы пытаетесь применить' String' к 'int'. –

+1

Не существует общепринятого метода для «отливки» произвольного объекта в 'int'. Операция «литье» утверждает, что ссылочная переменная относится к типу, который применяется к (или только в случае примитивов), может быть преобразован в этот тип с помощью четко определенных методов. То, что вы, по-видимому, хотите сделать, это преобразовать String в int. В этом случае объявите параметр String и используйте Integer.parseInt. Объявление параметра как объекта просто задерживает до тех пор, пока время выполнения не будет обнаружено во время компиляции. –

ответ

1
public static int toInt(Object obj) 
{ 
     return Integer.parseInt((String) obj); 
} 



public static void main (String []args) 
{ 
    System.out.println(toInt(tInput())); 
} 
2
read.nextLine(); //returns a string. 

Вы не можете бросить строку в целое число, поэтому я хотел бы использовать Integer.parseInt(str) сначала разобрать строку в целое число, затем отливали. Попробуйте изменить метод TInput() к методу ниже

public static Object tInput() 
{ 
    return Integer.parseInt(read.nextLine()); 
} 

Посмотрите на Java Doc для Integer.parseInt (String) в случае необходимости

Integer#parseInt

1

Strings не Integers (и особенно не ints). Вы не можете их бросить, вам нужно конвертировать. A String могут быть преобразованы в int на Integer.parseInt(myString)

1

Вы не можете отличить String в int.

Попробуйте это:

int myInt = Integer.valueOf(tInput().toString()); 
return myInt; 
1

Если объект является строкой, как в этом случае вы можете использовать:

int i = Integer.valueOf((String) object); 

Если объект является Integer вы можете случае это:

int i = (Integer) object; 

Любой из этих методов имеет риск возникновения побочных эффектов , поэтому вам необходимо будет обработать соответствующим образом.

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