Código em JAVA [AJUDA] - Exercício Proposto

Bom dia! Alguém poderia me ajudar com o código para o problema abaixo? É um exercício sugerido por um professor de um curso de Engenharia. Abaixo está o solicitado, se alguém puder ajudar, ficaria muito grato.

"Em exercícios anteriores, foi criado um algoritmo para converter um código de cores de resistores em valor numérico da resistência. Agora, iremos fazer o inverso. Faça um programa que, ao informar o valor da resistência, retorne o código de cores do resistor.

Obs.: Basta considerar valores de resistência a partir de 10 Ω. Em outras palavras, basta considerar as cores preto, marrom, vermelho, laranja, amarelo, verde, azul, violeta, cinza e branco. Não precisa considerar resistores maiores que 91 MΩ. Em outras palavras, eventualmente não será necessário utilizar os tipos de dados unsigned int ou long int para armazenar os valores dos resistores, já que os valores não serão muito grandes numericamente.

Parte 1 ----> Após as mensagens de boas-vindas e informações, incluindo o nome do autor do programa, o usuário deve entrar no teclado com um valor inteiro entre 10 e 91000000. O programa só pode avançar caso o usuário digite um número inteiro nesta faixa de valores.

Obs.: Não precisa testar se o usuário digitou um número inteiro.

Complemento: ao pressionar enter, deve ser impresso ‘Ω’ após o número digitado.

Parte 2 ----> O computador deve identificar os dois primeiros dígitos e informar se o resistor faz parte da série E-24. (10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 75, 82, 91)

Obs.: Lembre-se de fazer soluções simples e curtas.

Complemento: se não fizer parte do E-24, perguntar novamente pelo resistor.

Parte 3 ----> Deve ter um método que recebe um número, entre 0 e 9, e retorna uma string com o nome da cor. Esse método deve ser utilizado para obter as 3 cores.

Parte 4 ----> As 3 cores retornadas devem ser armazenadas em um vetor de string. Imprimir na tela as três cores.

Complemento: A chamada do método desenvolvido em (3) deve estar dentro de um laço de repetição.

Parte 5 ----> Pergunte ao usuário a potência do resistor. Retorne para o usuário a máxima tensão que aquele resistor pode ser submetido ( 𝑉=√𝑃.𝑅 ). O cálculo deve ser feito dentro de um novo método.

Consegui a primeira parte, mas ainda não tá o ideal, creio eu. Tive dificuldade no restante…

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    System.out.println("Olá, seja bem-vindo! Este programa recebe o valor da resistência e retorna as de cores do resistor, de acordo com o código de cores.");
    System.out.println("Autor: Fulano de tal.");
    Scanner teclado = new Scanner(System.in);
    
    System.out.println("Informe o valor do resistor");
    int res = (teclado.nextInt());
    
    while (res < 10 || res > 91000000) {
      System.out.println("Número fora da faixa permitida");
      System.out.println("Informe o valor do resistor");
      res = (teclado.nextInt());
    }
    
    System.out.println(res+"Ω");
  }
}

Para não teres de repetir no código a parte de pedir e ler o número, podes alterar para do ... while

int res = 0;
do {
   System.out.println("Informe o valor do resistor");
   res = (teclado.nextInt());
   if(res < 10 || res > 91000000) {
      System.out.println("Número fora da faixa permitida");
   }
}  while (res < 10 || res > 91000000);

Estás no bom caminho, vai tentando o resto que alguém cá estará para ajudar

Com relação a parte 2 do programa:

String transf = String.valueOf(valorResistor);
char digito1 = transf.charAt(0); char digito2 = transf.charAt(1);
System.out.print(digito1);
System.out.print(digito2);

Consegui pegar os 2 valores inicias, como faria pra ver se faz parte da série E24?

Eu faria assim:

import java.io.PrintStream;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

class Main {

	private static final Scanner IN = new Scanner(System.in);
	private static final PrintStream OUT = System.out;
	
	private static final List<String> SERIE_E24 = Arrays.asList("10", "11", "12", "13", "15", "16", "18", "20",
													            "22", "24", "27", "30", "33", "36", "39", "43",
													            "47", "51", "56", "62", "68", "75", "82", "91");

	public static void main(String[] args) {
		Main programa = new Main();
		programa.executar();
	}

	public void executar() {
		OUT.println("Olá, seja bem-vindo! Este programa recebe o valor da resistência e retorna as cores do resistor, de acordo com o código de cores.");
		OUT.println("Autor: Fulano de tal.");

		int valorResistor = 0;
		do {
			OUT.println("Informe o valor do resistor");
			valorResistor = Integer.parseInt(IN.nextLine());
			if (valorResistor < 10 || valorResistor > 91000000) {
				OUT.println("Número fora da faixa permitida");
			}
		} while (valorResistor < 10 || valorResistor > 91000000);
		OUT.println(valorResistor + "Ω");
		
		String doisDigitos = String.valueOf(valorResistor).substring(0, 2);
		String pertence = SERIE_E24.contains(doisDigitos) ? "pertence" : "não pertence";
		OUT.println(pertence + " à série E24");	
	}
}

Massa. Vários comandos que não vi ainda, não conheço…

De que forma poderia fazer através de métodos “mais simples”? Sem querer abusar, claro, apenas quero seguir o raciocínio.

Java não possui comandos.

O que você entende por “métodos mais simples”?

Antes você estava implementando tudo em um único método chamado main, isso não se faz, procure segregar sua lógica em métodos menores.