Problemas com if/else

Olá, pessoal. Gostaria que me ajudassem a resolver esse pequeno problema:

O problema aqui é na sintaxe, pois gostaria que o programa exibisse a mensagem " Você não está estuadando, Não está estudando, é uma pena! :confused: ", caso “study=false” .
Agradeço, desde já a ajuda! (:

Olha o código:

import java.util.*;
public class Estudar{
public static void main(String[]args){
Scanner in = new Scanner(System.in);
boolean study;
System.out.print("Use -true- se estiver estudando e -false- se não estiver: “);
study = in.nextBoolean();
if (study=true){
System.out.print(” Você está estuadando. Parabéns! :DD “);
}
if(study=false){
System.out.print(” Você não está estuadando, Não está estudando, é uma pena! :confused: ");
}

}
}

O operador = é diferente de == :slight_smile:

Dê uma olhada: http://journals.ecs.soton.ac.uk/java/tutorial/java/nutsandbolts/operators.html

Obrigado Rodrigo, não tinha percebido esse detalhe! (y) rsrs’

e não precisa de dois “ifs” tb, basta usar o else, ja que boolean pode ser apenas true or false

Oi Israel, bem vindoao forum. Então uma dica, use as tags CODE para postar código fonte, sql, xml… ficará mais fácil visualizar seu código.
Se não sabe como fazer, da uma olhada aqui: Aprenda a postar Código Fonte no GUJ

if de booleano não precisa verificar se é true
faz somente

if(condição){
do something
}else{
do something
}

[quote=kleberdamasco]if de booleano não precisa verificar se é true
faz somente

if(condição){ do something }else{ do something } [/quote]

Ou se preferir pode fazer o inverso

if(!study){
faz alguma coisa
}else{
faz alguma coisa}

Assim, tu ve primeiro se é falso, caso seja verdadeiro ira fazer a opção do else.

[quote=kmunga][quote=kleberdamasco]if de booleano não precisa verificar se é true
faz somente

if(condição){ do something }else{ do something } [/quote]

Ou se preferir pode fazer o inverso

if(!study){
faz alguma coisa
}else{
faz alguma coisa}

Assim, tu ve primeiro se é falso, caso seja verdadeiro ira fazer a opção do else.[/quote]

Porquê a necessidade de inverter as coisas ?

A única vantagens de usar not é quando não existe else ou é uma exceção à regra e faz fail fast
Com if-else é mais claro usar verificações positivas. Até porque acontecem coisas estranhas com negativas de negativas , o pessoal não é muito bom com logica de Bool

Quando tenho apenas duas condições para verificar, gosto de usar o que algumas literaturas chamam de operador ternário.
É uma forma simplificada de usar if(){}else{}.

A sintaxe é a seguinte:

[color=olive]Teste lógico? Valor para verdadeiro: valor para falso.[/color]


import java.util.Scanner;

public class Estudos {

	public static void main(String[] args) {
		Estudos estudos = new Estudos();
		Scanner reader = new Scanner(System.in);

		System.out.println("Você está estudando?");
		boolean situacao = reader.nextBoolean();
		System.out.println(estudos.verificaSeEstuda(situacao));
	}

	public String verificaSeEstuda(boolean resposta) {
		return (resposta == true) ? "Parabens!Agora...volte e vá estudar mais!"
				: "Vá estudar imediatamente!";
	}
}

[quote=Johnnny8]Quando tenho apenas duas condições para verificar, gosto de usar o que algumas literaturas chamam de operador ternário.
É uma forma simplificada de usar if(){}else{}.

A sintaxe é a seguinte:

[color=olive]Teste lógico? Valor para verdadeiro: valor para falso.[/color]

[code]

import java.util.Scanner;

public class Estudos {

public static void main(String[] args) {
	Estudos estudos = new Estudos();
	Scanner reader = new Scanner(System.in);

	System.out.println("Você está estudando?");
	boolean situacao = reader.nextBoolean();
	System.out.println(estudos.verificaSeEstuda(situacao));
}

public String verificaSeEstuda(boolean resposta) {
	return (resposta == true) ? "Parabens!Agora...volte e vá estudar mais!"
			: "Vá estudar imediatamente!";
}

}
[/code][/quote]

é totalmente desnecessário fazer resposta == true.

podes fazer

return resposta ? "Parabens!Agora...volte e vá estudar mais!" : "Vá estudar imediatamente!";

Eu particularmente não gosto de operador ternário, isso só serve pra economizar linhas…

Acho muito mais legível fazer com if/else bonitinho… A nao ser que tenha 10 ifs seguidos e com logicas faceis de entender, ai fica melhor com operadores ternarios mesmo.

[quote=igor_ks]Eu particularmente não gosto de operador ternário, isso só serve pra economizar linhas…

Acho muito mais legível fazer com if/else bonitinho…
[/quote]

masi legivel para quem ? para você ? E o resto do mundo ?
Vc acha que se o operador ternário fosse uma fútil questão de estética ele existira ? Vc usa switch ? Não use. Faça tudo com if/else :roll:

[quote]
A nao ser que tenha 10 ifs seguidos e com logicas faceis de entender, ai fica melhor com operadores ternarios mesmo.[/quote]

O if/else é um controle de fluxo. O operador ternário ( como o nome diz) é um operador. são coisas diferentes. O operador serve para melhor quando se está dicidindo dois valores para uma variável ou retorno. O if/else seve melhor quando estamos fazendo instruções diferentes para fluxos diferentes onde os dois lados não são simétricos.

Isto


return resposta ? "Parabens!Agora...volte e vá estudar mais!"  : "Vá estudar imediatamente!";  

e isto



if (resposta){
  return "Parabens!Agora...volte e vá estudar mais!" 
} else {
   return "Vá estudar imediatamente!";  
}

São coisas diferentes. O primeiro é DRY, o segundo não é. O primeiro segue o principio de “uma entrada, uma saída” , o segundo não.
O primeiro é sem duvida o código de um profissional. O segundo não.

Não pense o que é melhor e mais agradável para si, pense o que viola regras e o que não viola.

Não é uma questão de escreve mais ou menos, ou ter mais linhas ou menos. É uma questão de princípios de qualidade de programação.
Se o operador ternário ou o switch , ou o for, já agora , não servisse para aumentar a qualidade do programa, eles não existiriam.