Je fais une application qui permet aux gens de faire des enquêtes. Mon idée est de laisser les gens entrer des choix illimités pour une question, et de signaler quand ils ont fini avec cette question en appuyant sur Entrée sur une nouvelle ligne, à quel point je les laisse entrer la question suivante et les choix de cette question. Je pensais qu'appuyer sur Entrée sur une ligne vide entraînerait null, et a écrit la condition de boucle while pour rompre sur null, mais comme le code est, ci-dessous, il ne brise pas null, mais continue à demander aux utilisateurs de plus les choix. Alors j'ai pensé que peut-être une ligne vide est réellement "" au lieu de null. Mais quand je fais ça ... NullPointerException. J'espère que j'ai du sens ici. Essentiellement, la question est de savoir comment faire pour que la boucle interne se casse et passe à l'itération suivante de la boucle externe.Alors que la boucle est conçue pour interrompre l'entrée de l'utilisateur null, ne pas interrompre l'entrée de l'utilisateur null
Merci!
public class Survey implements Serializable {
String title = "";
ArrayList<Question> questions;
String surveyFileName;
//survey entry code
//entry is a Scanner defined in the Main class
while ((currentQn.questionContent = (Main.entry.nextLine())).equals("") == false) {
currentQn.choices.clear();
System.out.println("Please enter the text of question " + currentQnNo + ": ");
String currentChoice = "";
int currentChoiceNo = 1;
System.out.println("Please enter choice " + currentChoiceNo + " for question " + currentQnNo + ": ");
while ((currentChoice = (Main.entry.nextLine())) != null) {
System.out.println("Please enter choice " + currentChoiceNo + " for question " + currentQnNo + ": ");
currentQn.choices.add(currentChoice);
currentChoiceNo++;
}
currentQnNo++;
questions.add(currentQn);
}
et voici la mise en œuvre Question:
package surveyor;
import java.io.Serializable;
import java.util.*;
class Question implements Serializable {
public String questionContent = ""; //initialize these so no NPEs
public ArrayList<String> choices = new ArrayList<String>();
}
Pourquoi devrait-il renvoyer une valeur nulle? –
Veuillez arrêter d'appeler des chaînes vides ("") 'null'. Ils ne sont pas nuls, ils sont vides. Il y a une différence. –
Oui, il y a une différence. Alors, que Scanner obtient-il lorsque vous appuyez sur Entrée? Chaîne vide ou null? C'est ma question. –