Ik krijg een vreemde uitvoer bij het uitvoeren van (schijnbaar eenvoudige) code. Dit is wat ik heb:
import java.util.Scanner;
public class TestApplication {
public static void main(String[] args) {
System.out.println("Enter a password: ");
Scanner input = new Scanner(System.in);
input.next();
String s = input.toString();
System.out.println(s);
}
}
En de output die ik krijg na succesvol compileren is:
Enter a password:
hello
java.util.Scanner[delimiters=\p{javaWhitespace}+][position=5][match valid=true][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q�\E][infinity string=\Q∞\E]
Wat een beetje raar is. Wat gebeurt er en hoe druk ik de waarde van s
af?
Antwoord 1, autoriteit 100%
U krijgt de waarde toString()
geretourneerd door het Scanner-object zelf, wat niet is wat u wilt en niet hoe u een Scanner-object gebruikt. In plaats daarvan wilt u de gegevens verkregen doorhet Scanner-object. Bijvoorbeeld,
Scanner input = new Scanner(System.in);
String data = input.nextLine();
System.out.println(data);
Lees de tutorial over het gebruik ervan, want daarin wordt alles uitgelegd.
Bewerken
Kijk hier: Scannerhandleiding
Bekijk ook de Scanner-APIwaarin enkele van de finesses van de methoden en eigenschappen van Scanner worden uitgelegd.
Antwoord 2, autoriteit 11%
U kunt ook BufferedReadergebruiken:
import java.io.*;
public class TestApplication {
public static void main (String[] args) {
System.out.print("Enter a password: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String password = null;
try {
password = br.readLine();
} catch (IOException e) {
System.out.println("IO error trying to read your password!");
System.exit(1);
}
System.out.println("Successfully read your password.");
}
}
Antwoord 3, autoriteit 7%
input.next();
String s = input.toString();
wijzig het in
String s = input.next();
Misschien is dat wat je probeerde te doen.
Antwoord 4, autoriteit 7%
De kans is groter dat je krijgt wat je wilt:
Scanner input = new Scanner(System.in);
String s = input.next();
System.out.println(s);
Antwoord 5, autoriteit 7%
U drukt de verkeerde waarde af. In plaats daarvan als de tekenreeks die u afdrukt het scannerobject. Probeer dit
Scanner input = new Scanner(System.in);
String s = input.next();
System.out.println(s);
Antwoord 6
Als je alle andere antwoorden hebt geprobeerd en het nog steeds niet werkt, kun je proberen een regel over te slaan:
Scanner scan = new Scanner(System.in);
scan.nextLine();
String s = scan.nextLine();
System.out.println("String is " + s);