Algume me ajuda?

não sei oque o pq desse erro tentei muitas coisas e não consigo solucionar

Tenta usar o String.valueOf(); pode resolver.

Então, o método estatico parseInt(); da classe Integer recebe uma String como parametro, entao como foi dito pelo Gabrielfp use String.valueOf();. Ficara dessa forma:

     int codigoConvertido = Integer.parseInt(String.valueOf(codigo))

ou simplesmente concatene “codigo” com aspas duplas:

          int codigoConvertido = Integer.parseInt(codigo+"");

Remova o break:

Obs.:

então amigo necessito do break pois tenho que finalizar o while , caso não tenha o break o programa fica dando loop.

Como está você não adiciona nada.
Se remover não sai do loop.
Resumo: erro de lógica.

Crie uma forma de sair, exemplo:

se codigo == sair {
    break;
}

Na verdade não, na posição em que o break está o seu programa não vai funcionar, pois vai chegar naquele ponto e sair do loop.

Tentei fazer isso e não funcionou não sei oque pode ser.

Vai com calma, com um pouco de prática, você vai aprendendo.

Fiz um exemplo simples de cadastramento, onde usei um único break na aplicação.

Procure pelo if e tente entender a lógica.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Teste {

    List<Produto> produtos = new ArrayList<>();
    Scanner scan = new Scanner(System.in);

    public static void main(String[] args) {
        Teste teste = new Teste().cadastra();
        System.out.println("Verificando lista de produtos cadastrados: Total -> " + teste.produtos.size());
        teste.produtos.forEach(item -> System.out.println(item.toString()));
    }

    private Teste cadastra() {
        //para uma economia de linhas, optei por organizar as perguntas é um vetor
        String[] perguntas = {"Informe o código do produto", "Informe a descrição", "Informe o preço"};
        String[] resposta = new String[perguntas.length];//outro vetor para guardar as respostas

        a:
        while (true) {
            //percorrendo as perguntas e pegando as respostas
            for (int i = 0; i < perguntas.length; i++) {
                System.out.println(perguntas[i] + " ou sair.");
                resposta[i] = scan.nextLine();
                //Tente compreender o funcionamento do if abaixo, pois se o usuário digitar sair ele sai do laço while, bem como quando não digitar nada
                if (resposta[i].isEmpty() || resposta[i].equalsIgnoreCase("sair")) {
                    System.out.println(resposta[i].equalsIgnoreCase("sair") ? "Saindo do cadastramento." : "Operação cancelada.");
                    scan.close();
                    break a;//o break será executado diretamento no while
                }
                
            }//se sair do for, cadastra um produto
            produtos.add(new Produto(new Integer(resposta[0]), resposta[1], new Float(resposta[2])));
            System.out.println("\nCadastramento realizado, total de itens: " + produtos.size() + "\n");
        }
        return this;
    }

}



public class Produto {
    private int codigo;
    private String descricao;
    private float preco;

    public Produto(int codigo, String descricao, float preco) {
        this.codigo = codigo;
        this.descricao = descricao;
        this.preco = preco;
    }

    public int getCodigo() {
        return codigo;
    }

    public String getDescricao() {
        return descricao;
    }

    public float getPreco() {
        return preco;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public void setPreco(float preco) {
        this.preco = preco;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    @Override
    public String toString() {
        return "Código: "+ this.codigo+" Descrição: "+this.descricao+" Preço: "+this.preco;
    }
    
}