Como verificar mais de uma coisa usando if e else

To querendo fazer um código que muda o nome da janela toda vez que você abre, mas eu quero fazer essas verificações só pra parte que cria o JFrame não pro outros parâmetros, então pensei em colocar um if que de qualquer jeito não importa o númeor aleatória gerado aplica as coisas necessárias e outros cinco if para definir qual o nome da janela que vai aparecer. Isso tudo só pra não deixar o código muito grande.
segue o código:

package miniJogo;

import java.awt.Canvas;
import java.awt.Dimension;
import java.util.Random;
import java.util.Scanner;

import javax.swing.JFrame;

public class Main extends Canvas implements Runnable{

public static JFrame frame;
private final int WIDTH = 160;
private final int HEIGHT = 120;
private final int SCALE = 3;
Random rand = new Random();

public Main() {
	setPreferredSize(new Dimension(WIDTH*SCALE,HEIGHT*SCALE));
	rand.nextInt(5);
	if(rand.equals(1||2||3||4||5)) {
		frame.add(this);
		frame.setResizable(false);
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

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

}

public void run() {
	
}	

}

Isso daqui provavelmente não vai funcionar… o jeito certo seria:
if(rand.equals(1) || rand.equals(2) || rand.equals(3)...) {

Agora, não estou realmente entendendo o que você quer/está com dúvida poderia ser mais claro?

Não, assim você está comparando o objeto rand (que é uma instância de Random) com os números 1, 2, etc. Ou seja, nunca vai entrar no if.

O que teria que ser feito é guardar o valor de nextInt em uma variável e comparar esse valor:

int num = rand.nextInt(5);
if (num == 1 || num == 2 || num === 3 etc)

Mas nesse caso, se for para ver se o número é 1, 2, 3, 4 ou 5, é o mesmo que verificar se ele está entre 1 e 5:

if (1 <= num && num <= 5)

Mas na verdade nada disso faz sentido, porque rand.nextInt(5) retorna um número inteiro entre zero e 4. Ou seja, ele nunca retornará 5. Então na verdade está meio confuso e não entendi o que exatamente o que é para fazer…

1 curtida

Eu nem olhei a variável kkk, só falei mesmo por está fazendo a comparação lógica de forma errada.

Acredito que você esteja querendo fazer toda vez que o programa iniciar você aleatoriamente gerar um titulo pro JFRAMe diferente, se for assim seria ± assim:

int num = rand.nextInt(5);
switch(num){
case 0:
frame.setTitle("Título 1");
break;
case 1:
frame.setTitle("Título 2");
break;
etc......
default:
break;
}

Sabe no Terraria que cada vez que você abre a janela ela vem com um nome diferente lá em cima (Exemplo: “Terraria: alguma frase aleatória”, ai abrindo de novo seria “Terraria: Outra frase aleatória”) é isso que eu estou querendo fazer. Eu já tinha descoberto um jeito mais simples de fazer isso mas eu me esqueci e não tenho mais o projeto, aí pensei em fazer assim mas não funcionou.

Faz uma lista (hardcoded ou de um arquivo) com todas as frases aleatórias.
Aí sorteia um número de acordo com o tamanho da lista. Usa o número pra pegar a frase (index). E seta no frame como título.

Exemplo:

public Main() {
	setPreferredSize(new Dimension(WIDTH*SCALE,HEIGHT*SCALE));
	setTitulo();
	frame.add(this);
	frame.setResizable(false);
	frame.pack();
	frame.setLocationRelativeTo(null);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setVisible(true);
}

private void setTitulo() {
    List<String> frases; //pegar de alguma forma
    int index = rand.nextInt(frases.size());
    frame.setTitle(frases.get(index));
}
1 curtida