Domanda Problema algoritmo in Java

Ignyyy

Utente Bronze
24 Maggio 2019
24
17
1
27
Salve! Sono un principiante nella programmazione e un novellino per quando riguarda JAVA.
Volevo creare un algoritmo di "scelta" basato sul solito S/N. E' un algoritmo stupido, che semplicemente ti chiede: "Vuoi sapere quanti sono i mesi dell'anno?" (Faccio queste cose per imparare, oltre a seguire videolezioni, sperimento un po' per conto mio per imparare nuove cose più velocemente) Se rispondo "S" deve dire: "I mesi dell' anno sono 12". Se si risponde "N", deve dire: "Ok, va bene, l'aspettiamo!". Fatto sta che qualsiasi cosa scrivo alla domanda, da come Output un errore.
Ecco il codice:
import java.util.Scanner;
import java.awt.*;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package costruttiite;

/**
*
* @author igny
*/
public class CostruttiIte {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

System.out.println("Vuoi sapere quanti sono i mesi dell'anno?");

Scanner scan = new Scanner(System.in);
String dom = scan.nextLine();

if(== null ? ("S") == null : domanda.equals("S")){
System.out.println("I mesi dell' anno sono 12!");

}else if(== null ? ("N") == null : risposta.equals("N")){
System.out.println("Ok, va bene, l'aspettiamo!");



}



}

}
 
Ultima modifica:
Innanzi tutto quando si posta un codice che dà errori si postano anche gli errori. Dopodiché sto vedendo if e uso di operatore ? messi completamente a caso. vedo == null senza un oggetto d'avanti quindi cosa dovrebbe verificare? Se usi if else non usi la short syntax con il ? , che significa allora e il : significa altrimenti mentre tu hai fatto un misto. Il riferimento all'oggetto stringa domanda, non esiste nel codice quindi quando scrivi domanda.equals, non può funzionare. Casomai dovresti chiamarlo su dom dato che hai assegnato l'input da tastiera al riferimento di nome dom, il codice che vuoi creare tu è il seguente.

Java:
package costruttiite;

import java.util.Objects;
import java.util.Scanner;

public class CostruttiIte {
public static void main(String[] args) {

System.out.println("Vuoi sapere quanti sono i mesi dell'anno?");

Scanner scan = new Scanner(System.in);
String dom = scan.nextLine();

//Usa il nullSafe equals della classe objects invece dell'equals della classe string richiamabile su un oggetto
//in questo modo non hai la necessità di verificare se l'oggetto dom è null prima di provare a richiamarci l'equals sopra al fine di evitare una NullPointerException
//per usare l'operatore ? si fa così:
String rispostaSiNo = Objects.equals(dom,"S") ? "I mesi dell' anno sono 12!" :
                                       Objects.equals(dom,"N") ? "Ok, va bene, l'aspettiamo!"
                                       :  "Non hai scelto S o N";

System.out.println(rispostaSiNo);
}
}
Ad ogni modo queste sono cose molto basilari , ti consiglieri prima di studiare la parte teorica di Java degli oggetti, dei controllo di flusso, dei cicli etc...
 
  • Mi piace
Reazioni: 0xbro
I due if sono sbagliati, non ho capito cosa tu stia facendo. Basterebbe mettere dentro agli if dom.equals("S/N"), il quale restituisce un valore booleano true o false, che andrà a soddisfare le condizioni
 
Innanzi tutto quando si posta un codice che dà errori si postano anche gli errori. Dopodiché sto vedendo if e uso di operatore ? messi completamente a caso. vedo == null senza un oggetto d'avanti quindi cosa dovrebbe verificare? Se usi if else non usi la short syntax con il ? , che significa allora e il : significa altrimenti mentre tu hai fatto un misto. Il riferimento all'oggetto stringa domanda, non esiste nel codice quindi quando scrivi domanda.equals, non può funzionare. Casomai dovresti chiamarlo su dom dato che hai assegnato l'input da tastiera al riferimento di nome dom, il codice che vuoi creare tu è il seguente.

Java:
package costruttiite;

import java.util.Objects;
import java.util.Scanner;

public class CostruttiIte {
public static void main(String[] args) {

System.out.println("Vuoi sapere quanti sono i mesi dell'anno?");

Scanner scan = new Scanner(System.in);
String dom = scan.nextLine();

//Usa il nullSafe equals della classe objects invece dell'equals della classe string richiamabile su un oggetto
//in questo modo non hai la necessità di verificare se l'oggetto dom è null prima di provare a richiamarci l'equals sopra al fine di evitare una NullPointerException
//per usare l'operatore ? si fa così:
String rispostaSiNo = Objects.equals(dom,"S") ? "I mesi dell' anno sono 12!" :
                                       Objects.equals(dom,"N") ? "Ok, va bene, l'aspettiamo!"
                                       :  "Non hai scelto S o N";

System.out.println(rispostaSiNo);
}
}
Ad ogni modo queste sono cose molto basilari , ti consiglieri prima di studiare la parte teorica di Java degli oggetti, dei controllo di flusso, dei cicli etc...
Grazie. Ho sistemato
Messaggio unito automaticamente:

@Ignyyy sei riuscito a comprendere l'errore che stavi commettendo? Necessiti ancora di una mano con il tuo codice oppure hai risolto?
Ho risolto! Grazie a tutti!