Boa tarde galera, sou novo em java (em programação tbm e.e) e estava construindo uma aplicação onde ela realiza os cálculos para as funções do 1º e 2º grau. Para incrementar coloquei um loop while para que toda vez q terminasse os calculos o usuário poderia voltar e reiniciar a aplicação. Só q na hora de escolher o ‘S’ (Sim) e retornar ao início ocorre o seguinte erro:
"Exception in thread “main” java.lang.StringIndexOutOf BoundsException: String index out of range: 0 at java.lang.String.charAt(Unknown Source)
at Funcoes.main(Funcoes.java:13)
O código é meio grande então aqui está a parte onde ocorre a pergunta:
System.out.print("Deseja voltar ao inicio?(S/N)\n"+"> ");
e = ent.next().charAt(0);
switch(e){
case 'S':
continue;
case 'N':case 'n':
escolha = false;
}
Obs: No caso escolhi Switch mas tentei com While tbm e não funciona com o ‘S’.
Faz o seguinte:
System.out.print("Deseja voltar ao inicio?(S/N)\n"+"> ");
String voltarAoInicio = ent.next();
switch(voltarAoInicio) {
case "S":
case "s":
escolha = true;
break; // sai do switch/case
case "N":
case "n":
escolha = false;
break; // sai do switch/case
}
System.out.println("Resposta: '" + voltarAoInicio + "'");
if (escolha == true) {
continue; // continua no while
} else {
break; // sai do while
}
Não funcionou, continua o mesmo erro do código amigo.
import java.util.Scanner;
public class Funcoes{
public static void main(String[] args){
Scanner ent = new Scanner(System.in);
float a,b,c,delta,x1,x2,y;
char f,e;
boolean escolha = true;
System.out.println("-----Cálculo das Funcoes-----\n");
while(escolha){
System.out.print("Escolha a funcao para calcular(1 - 1ºgrau // 2- 2ºgrau\n" +"> ");
f = ent.nextLine().charAt(0);
if (f == '1'){//Escolha pra Função Afim
System.out.println("---Calculo da Funcao Afim(1º Grau)---");
System.out.println("Formula: ax + b = y");
System.out.print("Digite o valor de 'a': ");
a = ent.nextFloat();
System.out.print("Digite o valor de 'b': ");
b = ent.nextFloat();
System.out.print("Digite um valor para 'x': ");
x1 = ent.nextFloat();
System.out.print("Digite outro valor pra 'x': ");
x2 = ent.nextFloat();
System.out.printf("Sua formula é %.1fx + %.1f = y\n",a,b);
y = (a*x1) + b;
System.out.printf("Para x = %.1f, y = %.1f\n",x1,y);
y = (a*x2) + b;
System.out.printf("Para x = %.1f, y = %.1f\n",x2,y);
}
else if (f == '2'){ //Escolha pra Função do 2º Grau
System.out.println("---Calculo da Funcao Quadratica(2º Grau)---");
System.out.println("Formula: ax² + bx + c = y");
System.out.print("Digite o valor de 'a': ");
a = ent.nextFloat();
if(a > 0 || a < 0){
System.out.print("Digite o valor de 'b': ");
b = ent.nextFloat();
System.out.print("Digite o valor de 'c': ");
c = ent.nextFloat();
System.out.printf("Sua formula e %.1fx² + %.1fx + %.1f = y",a,b,c);
delta = (b*b)- (4*a*c);
if (delta < 0){
System.out.printf("Delta = %.1f. Delta negativo nao ha raizes.\n",delta);
}
else if (delta > 0){
x1 = (-(b) + (delta*1/2))/2*a;
x2 = (-(b) - (delta*1/2))/2*a;
System.out.printf("\nDelta = %.1f. As raízes da formula sao %.1f e %.1f\n",delta,x1,x2);
}
else{
x1 = (-(b) + (delta*1/2))/2*a;
System.out.printf("Delta = 0. Delta igual a zero, raizes iguais a %.1f\n",x1);
}
}
else{
System.out.println("Função inválida! Função de 2º Grau não possui a = 0.");
}
}
else{
System.out.println("Digite uma escolha válida!!");
}
System.out.print("Deseja voltar ao inicio?(S/N)\n"+"> ");
e = ent.next().charAt(0);
switch(e){
case 'S':case 's':
continue;
case 'N':case 'n':
escolha = false;
}
}
}
}
este é o código
Onde está ent.nextLine() troque por ent.next()
Deu certo, mt obrigado amigo. 