la prossima volta usa i tag code per scrivere il codice se no cosi nn si capisce bene:
codice:
import java.io.*;

public class Rain {

    public static void main(String[] args) {
        char par;
        int k;
        System.out.println("Scrivi un numero:");
        InputStreamReader reader = new InputStreamReader(System.in);
        BufferedReader myInput = new BufferedReader(reader);
        String str = new String();
        try {
            str = myInput.readLine();
        } catch (IOException e) {
            System.out.println("Si è verificato un errore: " + e);
            System.exit(-1);
        }
        k = Integer.parseInt(str);
        System.out.println("Scrivi \"ciao\"");
        BufferedReader myInput2 = new BufferedReader(reader);
        String str2 = new String();
        try {
            str2 = myInput2.readLine();
        } catch (IOException e) {
            System.out.println("Si è verificato un errore: " + e);
            System.exit(-1);
        }
        if (("ciao").equals(str2)) {
            System.out.println(str2);
        } else {
            System.out.println("Non hai scritto ciao");
        }
    }
}
questo e il codice corretto. l'if non funzionava per il semplcie fatto che hai una stringa non puoi scrivere == ad un'altra stringa questo == tra 2 stringe controlla se la locazione di memoria delle 2 variabile è uguale quindi restituisce sempre false

per fare uguaglienza tra 2 stringe devi usare il metodo equals delle stringhe
in questo caso:
("ciao").equals(str2) questo fa il confronto lettera per lettera delle stringe. ricorda se scrivi Ciao grnade ti restituisce sempre false perche e case sensetivi cioè riconosce il maiuscolo e il minuscolo ... se vuoi che nn sia case sensitive basta che scrivi cosi
("ciao").equals(str2.toLowerCase())