Queria saber se é possivel que se alguem escrevesse um numero no scanner de strings algum erro acontece-se e ele reiniciasse a pergunta ao inves de parar de funcionar,qualquer ajuda é bem vinda.
package a;
import java.util.Scanner;
public class Calculations {
public static void main(String[] args) {
long FlourAmount = 0;
long FlourMin = 200; //grams
long EggsAmount = 0;
long EggsMin = 1 ;
long MilkAmount = 0;
long MilkMin = 500; //miligrams
long ButterAmount = 0;
long ButterMin = 30; //grams
String Yes = null;
String UserName = null;
String Manteiga = null;
boolean DeuErrado;
DeuErrado = false;
Scanner userImput;
userImput = new Scanner(System.in);
Scanner userImputNumbers;
userImputNumbers = new Scanner(System.in);
//constructor
System.out.println("Olá !" + System.lineSeparator() + "Iniciando CakeMaker2000..");
System.out.println("Tudo Pronto !");
//Pergunta se o seu nome está certo
while (!"S".equalsIgnoreCase(Yes)) {
System.out.println("Qual é seu nome?");
UserName = userImput.nextLine();
System.out.println("O seu nome é " + UserName + " ?");
Yes = userImput.nextLine();
}
while(DeuErrado != true) {
try {
System.out.println("Seja Bem Vindo "+UserName+" ! \nQuantos gramas de farinha você tem ?");
FlourAmount = userImputNumbers.nextLong();
}catch(Exception noInt){
System.out.println("Não entendi..");
DeuErrado = false;
}
DeuErrado = true;
}
try {
System.out.println("Quantos ovos você tem ?");
EggsAmount = userImputNumbers.nextLong();
}finally{}
try {
System.out.println("Quantos mililitros de leite você tem ?");
MilkAmount = userImputNumbers.nextLong();
}finally{}
while(DeuErrado != true) {
System.out.println("Você vai usar manteiga ou margarina ?");
Manteiga = userImput.nextLine();
if (Manteiga.equalsIgnoreCase("Manteiga") ||Manteiga.equalsIgnoreCase("Margarina")) {
DeuErrado = true;
}else {
System.out.println("Não Entendi ..");
}}
try {
System.out.println("Quantos gramas de " + Manteiga +" você tem ?");
ButterAmount = userImputNumbers.nextLong();
}finally {}
//Main code here
if(FlourAmount < FlourMin || EggsAmount < EggsMin || MilkAmount < MilkMin || ButterAmount < ButterMin) {
int FORrunning = 0;
while (FORrunning != 666) {
for (int Jint = 0;Jint !=666;Jint++)
{
System.out.println("Você não tem os ingredientes para fazer um bolo.. ");
}
FORrunning++;
}
for(int I = 0; I != 100;) {
System.out.println("huAHUhuAHUhauHAUhauhUAHuhauHAUhauHAUhauhUAHuahUHAuhauHAUhauHAUhuahUAHUhauHAUhauHAUHuahUAHuahUHAUhauHAUhauHAUhauhUAHuahUHAUhauHAUhauUAuahuHAuhUHAuha");
System.out.println("Bem vindo "+ UserName +" !"+System.lineSeparator()+"Bem vindo ao InFeRnO ");
I++;
}
System.exit(0);
}else {
FlourAmount = FlourAmount/FlourMin;
System.out.println("Você tem " + FlourAmount + " gramas de farinha");
EggsAmount = EggsAmount/EggsMin;
System.out.println("Você tem " + EggsAmount + " ovos");
MilkAmount = MilkAmount/MilkMin;
System.out.println("Você tem " + MilkAmount + " mililitros de leite");
ButterAmount = ButterAmount/ButterMin;
System.out.println("Você tem " + ButterAmount + " gramas de " + Manteiga);
//find smallest number of em
long menor;
menor = 0;
if(EggsAmount <= ButterAmount && ButterAmount <= MilkAmount && MilkAmount <= FlourAmount) {
menor = EggsAmount;
}else if (ButterAmount <= MilkAmount && MilkAmount <= FlourAmount && FlourAmount <= EggsAmount) {
menor = ButterAmount;
}else if(MilkAmount <= FlourAmount && FlourAmount <= EggsAmount && EggsAmount <= ButterAmount) {
menor = MilkAmount;
}else if(FlourAmount <= EggsAmount && EggsAmount <= ButterAmount && ButterAmount <= MilkAmount) {
menor = FlourAmount;
}
System.out.println(UserName +",\nVocê pode fazer " + menor + " Bolos ! ");
}
}
}
Costumo utilizar uma classe StdIO pra facilitar a interação via console:
public class Calculations {
public static void main(String[] args) {
long flourAmount = 0;
long flourMin = 200; // grams
long eggsAmount = 0;
long eggsMin = 1;
long milkAmount = 0;
long milkMin = 500; // miligrams
long butterAmount = 0;
long butterMin = 30; // grams
String yes = null;
String userName = null;
String manteiga = null;
StdIO.println("Olá !" + System.lineSeparator() + "Iniciando CakeMaker2000..");
StdIO.println("Tudo Pronto !");
// Pergunta se o seu nome está certo
while (!"S".equalsIgnoreCase(yes)) {
userName = StdIO.readString("Qual é seu nome? ", texto -> !texto.trim().isEmpty());
StdIO.println();
yes = StdIO.readString("O seu nome é " + userName + " ? ", texto -> "S".equals(texto) || "N".equals(texto));
}
flourAmount = StdIO.readLong("Seja Bem Vindo " + userName + " ! \nQuantos gramas de farinha você tem ? ");
eggsAmount = StdIO.readLong("Quantos ovos você tem ? ");
milkAmount = StdIO.readLong("Quantos mililitros de leite você tem ? ");
manteiga = StdIO.readString("Você vai usar manteiga ou margarina ? ", texto -> "Manteiga".equalsIgnoreCase(texto) || "Margarina".equalsIgnoreCase(texto));
butterAmount = StdIO.readLong("Quantos gramas de " + manteiga + " você tem ? ");
if (flourAmount < flourMin || eggsAmount < eggsMin || milkAmount < milkMin || butterAmount < butterMin) {
int forRunning = 0;
while (forRunning != 666) {
for (int Jint = 0; Jint != 666; Jint++) {
StdIO.println("Você não tem os ingredientes para fazer um bolo.. ");
}
forRunning++;
}
for (int I = 0; I != 100;) {
StdIO.println("huAHUhuAHUhauHAUhauhUAHuhauHAUhauHAUhauhUAHuahUHAuhauHAUhauHAUhuahUAHUhauHAUhauHAUHuahUAHuahUHAUhauHAUhauHAUhauhUAHuahUHAUhauHAUhauUAuahuHAuhUHAuha");
StdIO.println("Bem vindo " + userName + " !" + System.lineSeparator() + "Bem vindo ao InFeRnO ");
I++;
}
System.exit(0);
} else {
flourAmount = flourAmount / flourMin;
StdIO.println("Você tem " + flourAmount + " gramas de farinha");
eggsAmount = eggsAmount / eggsMin;
StdIO.println("Você tem " + eggsAmount + " ovos");
milkAmount = milkAmount / milkMin;
StdIO.println("Você tem " + milkAmount + " mililitros de leite");
butterAmount = butterAmount / butterMin;
StdIO.println("Você tem " + butterAmount + " gramas de " + manteiga);
// find smallest number of em
long menor;
menor = 0;
if (eggsAmount <= butterAmount && butterAmount <= milkAmount && milkAmount <= flourAmount) {
menor = eggsAmount;
} else if (butterAmount <= milkAmount && milkAmount <= flourAmount && flourAmount <= eggsAmount) {
menor = butterAmount;
} else if (milkAmount <= flourAmount && flourAmount <= eggsAmount && eggsAmount <= butterAmount) {
menor = milkAmount;
} else if (flourAmount <= eggsAmount && eggsAmount <= butterAmount && butterAmount <= milkAmount) {
menor = flourAmount;
}
StdIO.println(userName + ",\nVocê pode fazer " + menor + " Bolos ! ");
}
}
}
Cara, muito obrigado pela ajuda , mas o readInt não está mudando a int flouramount por algum motivo , e quando eu ponho para StdIO.println(flourAmount);
a resposta é null como se fosse uma string…
Description |
Resource |
Path |
Location |
Type |
Cannot invoke test(int) on the primitive type int |
StdIO.java |
/a/src/a |
line 463 |
Java Problem |
Se você não postar o código que fez, não tem como identificar o problema.
package a;
import java.util.;
import java.io.;
public class Calculations2 {
public static void main(String[] args) {
int flourAmount = 0;
int flourMin = 1; // grams
int eggsAmount = 0;
int eggsMin = 1;
int milkAmount = 0;
int milkMin = 1; // miligrams
int butterAmount = 0;
int butterMin = 1; // grams
String yes = null;
String userName = null;
String manteiga = null;
String test ;
StdIO.println("Olá !" + System.lineSeparator() + "Iniciando CakeMaker2000..");
StdIO.println("Tudo Pronto !");
// Pergunta se o seu nome está certo
while (!"S".equalsIgnoreCase(yes)) {
userName = StdIO.readString("Qual é seu nome? ", texto -> !texto.trim().isEmpty());
StdIO.println();
yes = StdIO.readString("O seu nome é " + userName + " ? ", texto -> "S".equalsIgnoreCase(texto) || "N".equalsIgnoreCase(texto));
}
StdIO.print("Seja bem vindo " +userName+ " !"+System.lineSeparator());
pText(flourAmount,"Quantos gramas de farinha você tem ?");
StdIO.println(flourAmount);
pText(eggsAmount,"Quantos ovos você tem ?");
pText(milkAmount,"Quantos mililitros de leite você tem ?");
manteiga = StdIO.readString("Você vai usar manteiga ou margarina ? ", texto -> "Manteiga".equalsIgnoreCase(texto) || "Margarina".equalsIgnoreCase(texto));
pText(butterAmount,"Quantos gramas de manteiga você tem ?");
if (flourAmount < flourMin || eggsAmount < eggsMin || milkAmount < milkMin || butterAmount < butterMin) {
int forRunning = 0;
while (forRunning != 2) {
for (int Jint = 0; Jint != 666; Jint++) {
StdIO.println("Você não tem os ingredientes para fazer um bolo.. ");
}
forRunning++;
}
for (int I = 0; I != 2;) {
StdIO.println("huAHUhuAHUhauHAUhauhUAHuhauHAUhauHAUhauhUAHuahUHAuhauHAUhauHAUhuahUAHUhauHAUhauHAUHuahUAHuahUHAUhauHAUhauHAUhauhUAHuahUHAUhauHAUhauUAuahuHAuhUHAuha");
StdIO.println("Bem vindo " + userName + " !" + System.lineSeparator() + "Bem vindo ao InFeRnO ");
I++;
}
System.exit(0);
} else {
flourAmount = flourAmount / flourMin;
StdIO.println("Você tem " + flourAmount + " gramas de farinha");
eggsAmount = eggsAmount / eggsMin;
StdIO.println("Você tem " + eggsAmount + " ovos");
milkAmount = milkAmount / milkMin;
StdIO.println("Você tem " + milkAmount + " mililitros de leite");
butterAmount = butterAmount / butterMin;
StdIO.println("Você tem " + butterAmount + " gramas de " + manteiga);
// find smallest number of em
long menor;
menor = 0;
if (eggsAmount <= butterAmount && butterAmount <= milkAmount && milkAmount <= flourAmount) {
menor = eggsAmount;
} else if (butterAmount <= milkAmount && milkAmount <= flourAmount && flourAmount <= eggsAmount) {
menor = butterAmount;
} else if (milkAmount <= flourAmount && flourAmount <= eggsAmount && eggsAmount <= butterAmount) {
menor = milkAmount;
} else if (flourAmount <= eggsAmount && eggsAmount <= butterAmount && butterAmount <= milkAmount) {
menor = flourAmount;
}
StdIO.println(userName + ",\nVocê pode fazer " + menor + " Bolos ! ");
}
}
public static void pText(int valor,String texto) {
boolean DeuErrado = true;
while(DeuErrado == true) {
try{valor = StdIO.readInt(texto);
DeuErrado = false;
}catch( java.lang.NumberFormatException e){
StdIO.print("So use números por favor" +System.lineSeparator());
DeuErrado = true;
}}
DeuErrado = true;
}
}
Primeiro, o código que você postou nem compila pois os import
estão com sintaxe inválida.
Segundo, se arrumar os import
e executar o programa, a saída será idêntica à essa:
Olá !
Iniciando CakeMaker2000..
Tudo Pronto !
Qual é seu nome? Ricardo
O seu nome é Ricardo ? S
Seja bem vindo Ricardo !
Quantos gramas de farinha você tem ?100
0
Quantos ovos você tem ?3
Quantos mililitros de leite você tem ?500
Você vai usar manteiga ou margarina ? Margarina
Quantos gramas de manteiga você tem ?500
Você não tem os ingredientes para fazer um bolo.. ( essa linha repetida 1332 vezes)
huAHUhuAHUhauHAUhauhUAHuhauHAUhauHAUhauhUAHuahUHAuhauHAUhauHAUhuahUAHUhauHAUhauHAUHuahUAHuahUHAUhauHAUhauHAUhauhUAHuahUHAUhauHAUhauUAuahuHAuhUHAuha
Bem vindo Ricardo !
Bem vindo ao InFeRnO
huAHUhuAHUhauHAUhauhUAHuhauHAUhauHAUhauhUAHuahUHAuhauHAUhauHAUhuahUAHUhauHAUhauHAUHuahUAHuahUHAUhauHAUhauHAUhauhUAHuahUHAUhauHAUhauUAuahuHAuhUHAuha
Bem vindo Ricardo !
Bem vindo ao InFeRnO
Dica: Nem tem como o flourAmount
ser impresso nomo null
, afinal, é um tipo primitivo e não um objeto.
Ou você posta o código que realmente está apresentando valores null
ou não vai dar pra te ajudar.
Esse daqui ta dando zero agora , mas antes tava dando null por algum motivo… mas era para ele imprimir o numero que você digitou , entende?
quando uso flourAmount = StdIO.readInt();
aquele pText() é isso daqui ó :
public static void pText(int valor,String texto) {
boolean DeuErrado = true;
while(DeuErrado == true) {
try{valor = StdIO.readInt(texto);
DeuErrado = false;
}catch( java.lang.NumberFormatException e){
StdIO.print(“So use números por favor” +System.lineSeparator());
DeuErrado = true;
}}
DeuErrado = true;
}
Depois do valor que você digita é para aparecer o valor da variavel que deveria mudar…
Acho que estou usando errado …
PS: desculpa elas linhas repitidas , é que eu iria mandar pra um amigo nque tbm ta apredendo java… kkk dsclpa ai , e obrigado por me ajudar tanto ! (kkkkkk meu deus q vergonha era pra eu tirar isso)
O teu método pText
é void
e java não passa tipos primitivos por referência, você tem que fazer assim:
public static int pText(String texto) {
while (true) {
try{
return StdIO.readInt(texto);
} catch (NumberFormatException e){
StdIO.println("So use números por favor");
}
}
}
E usar asim:
flourAmount = pText("Quantos gramas de farinha você tem ?");
StdIO.println(flourAmount);
1 curtida