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:
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);
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…
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));
}