У меня проблемы с приведенным ниже кодом. Почему я не могу проверить, появляется ли сообщение «if (Person [i] [0] <18) <18)» с сообщением «Несопоставимые типы».
Я нашел статьи, в которых говорится, что я могу использовать if (Person [i] [0] .equals (18)), но как я могу проверить, больше ли оно?
Object[][] Person = new Object[2][2];
Person[0][0] = "John";
Person[0][1] = new Integer(18);
Person[1][0] = "Mike";
Person[1][1] = new Integer(42);
for(int i = 0; i < Person.length; i++)
{
System.out.print(Person[i][0]);
System.out.print("\t" + Person[i][1] + "\t");
if (Person[i][0] < 18)
{
System.out.print("18 or over");
}
System.out.println();
}
Map лучше справится с парами ключ-значение
Person должен быть объектом со свойствами, связанными с Person, вместо них у вас может быть список людей.




Вы должны ввести case ваш объект в целое число, например:
if ((int)Person[i][1] > 18)
это решение, но структура его кода не содержит дженериков, поэтому лучше изменить определение Person
Привет, Джесси, спасибо за ответ. Его решение сработало, однако, что вы имеете в виду, говоря о личности?
Это расширенная версия может быть примерно такой, как показано ниже. Возможно, вы захотите избежать проверки нить. Используйте только сравнение Целое число.
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
public class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
Object[][] Person = new Object[2][2];
Person[0][0] = "John";
Person[0][1] = new Integer(18);
Person[1][0] = "Mike";
Person[1][1] = new Integer(42);
for(int i = 0; i < Person.length; i++)
{
for(int j = 0; j < Person.length; j++)
{
System.out.print("\t" + Person[i][j] + "\t");
if (Person[i][j] instanceof Integer)
{
if ((int)Person[i][j] > 18)
System.out.print("18 or over");
}
}
System.out.println();
}
}
}
Я бы порекомендовал вам использовать карта, который может быть лучшим решением для этого. Проверьте код ниже.
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
public class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
Map<String, Integer> person = new HashMap<>();
person.put("John", 18);
person.put("Tim", 32);
person.put("Georges", 39);
person.put("Mike", 45);
person.put("Vikor", 17);
//interate this map
Iterator<Map.Entry<String,Integer>> itr = person.entrySet().iterator();
while(itr.hasNext()){
Map.Entry<String,Integer> p = itr.next();
System.out.print(p.getKey() +" - "+p.getValue());
if (p.getValue() >= 32)
System.out.print("\t 32 or over");
System.out.println();
}
}
}
Это может быть кому-то полезно.
Спасибо, что нашли время! На самом деле в этом есть большой смысл.
Потому что вы объявили его как массив объектов. Вам нужно преобразовать элемент массива в Integer, если вы хотите провести целочисленное сравнение.