Eu fiz esse código, que tendo como dados de entrada o preço de um produto e o código dele, mostra o preço junto do local de origem (se o código não for nenhum dos que o código reconhece, ele dá como importado), mas não sei porque ele dá o seguinte erro: Erro: Não foi possível localizar nem carregar a classe principal
Além disso, nas linhas onde estão os breaks, fica a interrogação vermelha, escrito “break outside switch or loop”. Sem os breaks, o código funciona, mas ai ele imprime na saída todos os resultados possíveis que estão abaixo do resultado correto. Alguém sabe como resolver?
public static void main(String[] args) {
int code;
float price;
Scanner entrada = new Scanner(System.in);
System.out.println("Digite o preço:");
price = entrada.nextInt();
System.out.println("Digite o código:");
code = entrada.nextInt();
if (code==1){
System.out.println("Preço: "+ price +". Procedência: Sul");
break;
} else {
System.out.println("Importado");
}
if (code==2){
System.out.println("Preço: "+ price +". Procedência: Norte");
break;
} else {
System.out.println("Importado");
}
if (code==3){
System.out.println("Preço: "+ price +". Procedência: Leste");
break;
} else {
System.out.println("Importado");
}
if (code==4){
System.out.println("Preço: "+ price +". Procedência: Oeste");
break;
} else {
System.out.println("Importado");
}
if (code>=5 || code<=6){
System.out.println("Preço: "+ price +". Procedência: Nordeste");
break;
} else {
System.out.println("Importado");
}
if (code>=7 || code <=9){
System.out.println("Preço: "+ price +". Procedência: Sudeste");
break;
} else {
System.out.println("Importado");
}
if (code>=10 || code <=20){
System.out.println("Preço: "+ price +". Procedência: Centro-oeste");
break;
} else {
System.out.println("Importado");
}
if (code>=25 || code<=30){
System.out.println("Preço: "+ price +". Procedência: Nordeste");
break;
} else {
System.out.println("Importado");
}
Você está usando um projeto “normal” ou um projeto “maven”?
Está utilizando netbeans ou eclipse ou qual ide?
Projeto normal, e estou usando o netbeans
Bom, normalmente fazer um build do projeto resolve a questão do “Não foi possível localizar nem carregar a classe principal”.
Outra coisa, switch é uma estrutura bem diferente do que você pôs no código. Você está estudando if/else if/else ou switch/case?
A instrução break
serve para interromper laços ou o fluxo de um switch
.
Se dentro desses if-else
você quer interromper a execução de seu método, utilize a instrução return
.
2 curtidas
Só pode ser utilizado break
em while
, for
e switch
e no caso especifico tem problemas no código já que o if
foi implementado errado:
Online IDEONE
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int code;
float price;
Scanner entrada = new Scanner(System.in);
System.out.println("Digite o preço:");
price = entrada.nextInt();
System.out.println("Digite o código:");
code = entrada.nextInt();
if (code==1)
{
System.out.println("Preço: "+ price +". Procedência: Sul");
}
else if (code==2)
{
System.out.println("Importado");
}
else if (code==3)
{
System.out.println("Preço: "+ price +". Procedência: Leste");
}
else if (code==4)
{
System.out.println("Preço: "+ price +". Procedência: Oeste");
}
else if (code>=5 || code<=6)
{
System.out.println("Preço: "+ price +". Procedência: Nordeste");
}
else if (code>=7 || code <=9)
{
System.out.println("Preço: "+ price +". Procedência: Sudeste");
}
else if (code>=10 || code <=20)
{
System.out.println("Preço: "+ price +". Procedência: Centro-oeste");
}
else if (code>=25 || code<=30)
{
System.out.println("Preço: "+ price +". Procedência: Nordeste");
}
else
{
System.out.println("Importado");
}
}
}
1 curtida
Exemplo usando return
:
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("Digite o preço:");
float price = entrada.nextInt();
System.out.println("Digite o código:");
int code = entrada.nextInt();
if (code == 1) {
System.out.println("Preço: " + price + ". Procedência: Sul");
return;
}
if (code == 2) {
System.out.println("Preço: " + price + ". Procedência: Norte");
return;
}
if (code == 3) {
System.out.println("Preço: " + price + ". Procedência: Leste");
return;
}
if (code == 4) {
System.out.println("Preço: " + price + ". Procedência: Oeste");
return;
}
if (code >= 5 || code <= 6) {
System.out.println("Preço: " + price + ". Procedência: Nordeste");
return;
}
if (code >= 7 || code <= 9) {
System.out.println("Preço: " + price + ". Procedência: Sudeste");
return;
}
if (code >= 10 || code <= 20) {
System.out.println("Preço: " + price + ". Procedência: Centro-oeste");
return;
}
if (code >= 25 || code <= 30) {
System.out.println("Preço: " + price + ". Procedência: Nordeste");
return;
}
System.out.println("Importado");
}
Exemplo usando if-else
:
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("Digite o preço:");
float price = entrada.nextInt();
System.out.println("Digite o código:");
int code = entrada.nextInt();
if (code == 1) {
System.out.println("Preço: " + price + ". Procedência: Sul");
} else if (code == 2) {
System.out.println("Preço: " + price + ". Procedência: Norte");
} else if (code == 3) {
System.out.println("Preço: " + price + ". Procedência: Leste");
} else if (code == 4) {
System.out.println("Preço: " + price + ". Procedência: Oeste");
} else if (code >= 5 || code <= 6) {
System.out.println("Preço: " + price + ". Procedência: Nordeste");
} else if (code >= 7 || code <= 9) {
System.out.println("Preço: " + price + ". Procedência: Sudeste");
} else if (code >= 10 || code <= 20) {
System.out.println("Preço: " + price + ". Procedência: Centro-oeste");
} else if (code >= 25 || code <= 30) {
System.out.println("Preço: " + price + ". Procedência: Nordeste");
} else {
System.out.println("Importado");
}
}
1 curtida
Sou um pequeno gafanhoto que está iniciando seus estudos com Java (por conta).
Pensei (deveras muito), mediante insegurança, incerteza e muito pouco domínio sobre o conteúdo em relação com os feras munidos de embasamento e muita experiência nos comentários, mãs, porém, todavia, entretanto… acho que posso contribuir com o meu primeiro post e se eu errar… eu tentei (e vocês corrijam-me, por favor), rs.
@Matheus_Dumont, talvez, acredito, o algoritmo funcione adequadamente substituindo os o operador || por &&.
@staroski, irei reutilizar seus códigos substituindo o || pelo &&.
Utilizando o return
:
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("Digite o preço:");
float price = entrada.nextInt();
System.out.println("Digite o código:");
int code = entrada.nextInt();
if (code == 1) {
System.out.println("Preço: " + price + ". Procedência: Sul");
return;
}
if (code == 2) {
System.out.println("Preço: " + price + ". Procedência: Norte");
return;
}
if (code == 3) {
System.out.println("Preço: " + price + ". Procedência: Leste");
return;
}
if (code == 4) {
System.out.println("Preço: " + price + ". Procedência: Oeste");
return;
}
if (code >= 5 && code <= 6) {
System.out.println("Preço: " + price + ". Procedência: Nordeste");
return;
}
if (code >= 7 && code <= 9) {
System.out.println("Preço: " + price + ". Procedência: Sudeste");
return;
}
if (code >= 10 && code <= 20) {
System.out.println("Preço: " + price + ". Procedência: Centro-oeste");
return;
}
if (code >= 25 && code <= 30) {
System.out.println("Preço: " + price + ". Procedência: Nordeste");
return;
}
System.out.println("Importado");
}
Utilizando if-else
:
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("Digite o preço:");
float price = entrada.nextInt();
System.out.println("Digite o código:");
int code = entrada.nextInt();
if (code == 1) {
System.out.println("Preço: " + price + ". Procedência: Sul");
} else if (code == 2) {
System.out.println("Preço: " + price + ". Procedência: Norte");
} else if (code == 3) {
System.out.println("Preço: " + price + ". Procedência: Leste");
} else if (code == 4) {
System.out.println("Preço: " + price + ". Procedência: Oeste");
} else if (code >= 5 && code <= 6) {
System.out.println("Preço: " + price + ". Procedência: Nordeste");
} else if (code >= 7 && code <= 9) {
System.out.println("Preço: " + price + ". Procedência: Sudeste");
} else if (code >= 10 && code <= 20) {
System.out.println("Preço: " + price + ". Procedência: Centro-oeste");
} else if (code >= 25 && code <= 30) {
System.out.println("Preço: " + price + ". Procedência: Nordeste");
} else {
System.out.println("Importado");
}
}
Espero ter ajudado,
.
Dá pra fazer assim também, misturando switch com ifs
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Digite o código: ");
int code = entrada.nextInt();
switch (code) {
case 1:
System.out.println("case " + code);
break;
case 2:
System.out.println("case " + code);
break;
case 3:
System.out.println("case " + code);
break;
case 4:
System.out.println("case " + code);
break;
default:
if (code >= 5 && code <= 6) {
System.out.println("if (code >= 5 && code <= 6) " + code);
} else if (code >= 7 && code <= 9) {
System.out.println("else if (code >= 7 && code <= 9) " + code);
} else if (code >= 10 && code <= 20) {
System.out.println("else if (code >= 10 && code <= 20) " + code);
} else {
System.out.println("Importado: " + code);
}
break;
}
entrada.close();
}
1 curtida
Valeu pela ajuda! Mas desse jeito não tem como mostrar o preço junto com a procedência, já que switch não aceita float (que seria o preço), certo?
Então, acho que não faria diferença, porque um número, por exemplo, entre 5 e 7, vai ser sempre maior ou igual a 5 e menor ou igual a 7, então tanto o operador || (or/ou) como o && (and/e) funcionariam. O operador || só precisa que uma das opções sejam verdadeiras, e como as duas são, ele valida a opção. O operador && precisa que as duas opções sejam verdadeiras, e como as duas são, ele também valida a opção. Valeu pela ajuda!
Valeu amigo, funcionou perfeitamente