Массив - сравнение int

У меня проблемы с приведенным ниже кодом. Почему я не могу проверить, появляется ли сообщение «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();
    }  

Потому что вы объявили его как массив объектов. Вам нужно преобразовать элемент массива в Integer, если вы хотите провести целочисленное сравнение.

Mad Physicist 16.03.2018 04:06
Map лучше справится с парами ключ-значение
Ubercool 16.03.2018 04:10
Person должен быть объектом со свойствами, связанными с Person, вместо них у вас может быть список людей.
MadProgrammer 16.03.2018 04:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны ввести case ваш объект в целое число, например:

  if ((int)Person[i][1] > 18)

это решение, но структура его кода не содержит дженериков, поэтому лучше изменить определение Person

Jesse 16.03.2018 04:12

Привет, Джесси, спасибо за ответ. Его решение сработало, однако, что вы имеете в виду, говоря о личности?

Bradie 16.03.2018 04:19
Ответ принят как подходящий

Это расширенная версия может быть примерно такой, как показано ниже. Возможно, вы захотите избежать проверки нить. Используйте только сравнение Целое число.

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();
        }

    }
}

Это может быть кому-то полезно.

Спасибо, что нашли время! На самом деле в этом есть большой смысл.

Bradie 16.03.2018 08:37

Другие вопросы по теме