Несовместимые типы ошибок Java

Я делаю программу, в которой пользователь сообщит свой номер и имя бухгалтера, а также его имя, однако он не запускается, и появляется сообщение об ошибке: требуются несовместимые типы: int found: String

Что я? что-то не так в моем коде?

import javax.swing.JOptionPane;
public class Capturas{
   public static void main(String[]args){



      String[]nombre=new String[5];
      String auxnombre;
      int[]num=new int[5];
      int opcionmenu=0;
      int capture1;
      int ejecutar=0;
      int auxnum=0;
      int casillas=0;
      int x=0;
      int error;
      int otro=0;
      int yaesta=0;
      int renglon;


          do
          {

         opcionmenu=JOptionPane.showInputDialog("Ingresa la opcion deseada: \n 1.Captura \n 2.Consulta \n 3.Cambios \n 4.Cancelaciones \n 5.Reinstalacion \n 6.Salida");
         if(opcionmenu==1)
         {
            if(casillas<4)
            {
               yaesta=0;
               auxnum=Integer.parseInt(auxnum=JoptionPane.showInputDialog("Ingresa el numero contable"));

               for(x=1; x<=4; x++)
               {
                  if(auxnum==num[x])
                  {
                     yaesta=1;
                  }
               }
               if(yaesta==1)
               {
                  JOptionPane.showMessageDialog(null, "El numero ya esta registrado");
               }
               if(yaesta==0)
               {
                  renglon=0;

                  for(x=1; x<=4; x++)
                  {
                     if(nombre[x]!=null)
                     {
                        renglon=renglon+1;
                     }
                  }
                  renglon=renglon+1;
                  num[renglon]=auxnum;
                  nombre[renglon]=auxnum;
                  nombre[renglon]=JOptionPane.showInputDialog("Ingresa el Nombre");
                  casillas=casillas+1;
               }
            }
         }
      }
      while(opcion!=6);

   }
}
0
задан 27.01.2017, 06:16
0 ответов

Один твои ошибки здесь:

auxnum=Integer.parseInt(auxnum=JoptionPane.showInputDialog("Ingresa el numero contable"));

Это должный быть быть только так

    auxnum=Integer.parseInt(JoptionPane.showInputDialog("Ingresa el numero contable"));

Другая ошибка здесь:

opcionmenu=JOptionPane.showInputDialog("Ingresa la opcion deseada: \n 1.Captura \n 2.Consulta \n 3.Cambios \n 4.Cancelaciones \n 5.Reinstalacion \n 6.Salida");

Это должный быть быть так:

opcionmenu=Integer.parseInt(JOptionPane.showInputDialog("Ingresa la opcion deseada: \n 1.Captura \n 2.Consulta \n 3.Cambios \n 4.Cancelaciones \n 5.Reinstalacion \n 6.Salida") );

Это ошибки, что я идентифицировал, что имели бы общее с ошибкой, которую ты показываешь, что твой вопрос.

3
ответ дан 03.12.2019, 17:28

Ошибка в твоем коде находится в этой линии:

opcionmenu = JOptionPane.showInputDialog(...);

Главным образом он случается потому что opcionmenu это переменная типа int, что надеется, что ты хранишь целое число внутри нее, однако функция showInputDialog(...) объекта JOptionPane возврати цепь текста или string вместо одного intа именно, что-нибудь в этом роде, что ты написал бы в неударе в лунку возникающего окна, не импортируя, если то, что ты написал, было числом.

Чтобы это решать только ты должен пробовать parsear string в int:

string input = JOptionPane.showInputDialog(...);
int opcionmenu = Integer.parseInt(input);

Этот код будет функционировать, всякий раз когда то, что ты напишешь, было целым числом. Но он не удастся иначе. Чтобы это предотвращать, только ты должен манипулировать исключением, которое случается в этом случае, и избегать того, чтобы приложение сломалось:

string input = JOptionPane.showInputDialog(...);

try {
  int opcionmenu = Integer.parseInt(input);
} catch(NumberFormatException e) {
  // Indicar al usuario que debe ingresar un número entero...
}
1
ответ дан 03.12.2019, 17:28