[RESOLVIDO] Como usar o THIS?

import java.util.Scanner;

class Questao{
String quarto;
public String retornaQuarto;{
return this.quarto;
}
public void atribuirQuarto(String quarto){
this.quarto=quarto;
}
public static void main (String[] args) {

	Questao open=new open();
	Scanner d=new Scanner(System.in);
	System.out.print("Qual o tipo de quarto: ");
	open.atribuirQuarto(d.nextLine());
	System.out.print("ConfimacaoDoQuarto:"+open.retornaQuarto);
}

}

Olá Arthur, tudo bem? Seja bem-vindo! Então, o problema não é no this. Olha como vc fez:

public String retornaQuarto;{ 
//Quando queremos criar um método
//precisamos definir se ele retorna algo
//e também se tem algum atributo.

//No seu caso retorna uma String e não há
//nenhum atributo.
return this.quarto;
}

O correto seria:

public String retornaQuarto() {
    return this.quarto;
}

Outro erro também foi aqui:

Questao open=new open();

Quando o correto seria:

Questao open = new Questao();


Respondendo sobre o this bem resumidamente:

O this é usado para referenciar o objeto que está sendo executando no momento.


Seu código correto seria:

import java.util.Scanner;

public class Questao {

    String quarto;

    public String retornaQuarto() {
        return this.quarto;
    }

    public void atribuirQuarto(String quarto) {
        this.quarto = quarto;
    }

    public static void main(String[] args) {
        Questao open = new Questao();
        Scanner d = new Scanner(System.in);
        System.out.println("Qual o tipo de quarto: ");
        open.atribuirQuarto(d.nextLine());

        System.out.println("Confirmação do quarto: " + open.retornaQuarto());
    }
}
1 curtida

Exception in thread “main” java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at Codechef.main(Main.java:22)
/Eu coloquei todo o código ele mostrar essa mensagem, já tentei ajeitar mas não deu cero/
/Ele tá mostrando que não ler nenhuma linha/
/COMO EU RESOLVO ESSE PROBLEMA?/

Amigo, eu já te passei o código pronto e funcionando. Se você fez algo a mais, manda aqui.

import java.util.Scanner;
class Codechef{
String quarto;

public String retornaQuarto() {
    return this.quarto;
}

public void atribuirQuarto(String quarto) {
    this.quarto = quarto;
}

public static void main(String[] args) {
    Codechef open = new Codechef();
    Scanner d = new Scanner(System.in);
    System.out.println("Qual o tipo de quarto: ");
    open.quarto=d.nextLine());

    System.out.println("Confirmacao do quarto: " + open.retornaQuarto());
}

}

ESSE É O PROBLEMA EU NÃO FIZ NADA , NA LINHA 22 ELE DA ERRO

O erro que você mencionou nem tem como ocorrer no fonte que você postou.
Seu fonte nem compila devido ao erro de sintaxe abaixo:

1 curtida