Cum pot obține valoarea ascii a „Liniei următoare” / „Enter” de la utilizator (Programare, Java)

James a intrebat.

Am nevoie să obțin valoarea ASCII a fiecărui caracter introdus. Am char și whitespace, dar nu reușesc să obțin o valoare pentru „next line” / enter.

M-am gândit să folosesc o instrucțiune if care să spună că if(letter == ‘
‘)(ascii = 10), dar aceasta 1. nu funcționează și 2. forțează valoarea manual și încerc să-mi dau seama cum să o fac să fie citită și atribuită automat.

        Scanner scan = new Scanner(System.in);

        char letter = scan.nextLine().charAt(0);

        int ascii = (int) letter;

        System.out.println(ascii);

        scan.close();

Comentarii

  • Nu se poate. Scanner.nextLine() elimină terminatorul de linie, așa cum face BufferedReader.readLine(). Nu îl veți vedea niciodată. –  > Por utilizator207421.
  • De ce ați șters WorkItem întrebare? stackoverflow.com/questions/56640516/… – –  > Por Enigmaticitate.
2 răspunsuri
Basil Bourque

The scanner mănâncă sfârșitul de linie după ce îl detectează. Primești caracterele introduse până la, dar inclusiv, sfârșitul de rând.

De asemenea, nu trebuie să utilizați char pentru a urmări litere simple. Fiind o simplă valoare pe 16 biți, poate reprezenta doar caractere din planul de bază al Unicode, mai puțin de jumătate din cele 137 000 de caractere definite în Unicode.

Utilizați metodele bazate pe numere întregi, cum ar fi String::codePointAt și String::codePoints.

hfontanez

Valoarea ASCII a noului caracter este 10 (0x0A). Valoarea revenirii la cărucior este 13 (0x0D).

public class HelloWorld {
  public static void main(String[] args) {
    String hello = "Hello World!
";
    System.out.print(hello);

    int letter = (int)hello.charAt(hello.length()-1);
    System.out.println(letter);
  }
}

Comentarii

  • Ceea ce a postat celălalt tip și ceea ce am postat eu este mai aproape de ceea ce caut eu. Cu toate acestea, atunci când se cere utilizatorului să introducă un caracter și dacă acesta doar apasă enter (linie nouă) tot nu afișează o valoare totuși. De ce se întâmplă acest lucru? –  > Por James.
  • @James, consultați comentariul pe care user207421 l-a adăugat la postarea dvs. inițială. Acesta este motivul pentru care am arătat acest exemplu. Nu puteți obține caracterul de linie nouă din acea metodă, deoarece acesta este consumat înainte de a putea intra în posesia lui. De asemenea, dacă ai votat în minus răspunsul meu, ia în considerare faptul că enunțul problemei tale sună astfel: „Trebuie să obțin valoarea ASCII a fiecărui caracter introdus.” și am reușit să demonstrez acest lucru. Prin urmare, nu este potrivit să dai downvote. –  > Por hfontanez.
  • Nu am dat downvote la nimic. Am pus doar întrebarea pentru că încerc să înțeleg. Îmi pare rău că ai fost downvoted, dar din moment ce rangul meu este mai mic, nu pot să dau upvote sau downvote la răspunsuri. –  > Por James.

Tags: