Was nutzt System.in.read ()?

8

Was nutzt System.in.read() in Java?
Bitte erläutern Sie das.

    
gobi 16.03.2013, 07:23
quelle

8 Antworten

20

Vielleicht hilft Ihnen dieses Beispiel.

%Vor%     
USER 16.03.2013, 07:26
quelle
17

Zweieinhalb Jahre Verspätung ist besser als nie, oder?

int System.in.read() liest das nächste Datenbyte aus dem Eingabestrom. Aber ich bin mir sicher, dass Sie das bereits wussten, weil es trivial ist, nachzuschlagen. Also, was Sie wahrscheinlich fragen, ist:

  • Warum wird deklariert, ein int zurückzugeben, wenn in der Dokumentation steht, dass es byte liest?

  • und warum scheint es Müll zurückzugeben? (Ich tippe '9' , aber es gibt 57 zurück.)

Es gibt ein int zurück, da es neben allen möglichen Werten eines Bytes auch einen zusätzlichen Wert zurückgeben kann, um das End-of-Stream anzuzeigen. Also, es muss einen Typ zurückgeben, der mehr Werte ausdrücken kann als ein byte .

Hinweis: Sie hätten es zu einem short machen können, aber sie haben sich stattdessen für int entschieden, möglicherweise als Hinweis auf C, dessen getc() -Funktion auch% co_de zurückgibt %, aber noch wichtiger, weil int ein wenig umständlich ist. (Die Sprache bietet keine Möglichkeit, ein short Literal anzugeben, also müssen Sie ein short literal angeben und es in int umwandeln) Außerdem hat short auf bestimmten Architekturen eine bessere Leistung als int .

Es scheint Müll zu hinterlassen , denn wenn Sie ein Zeichen als Ganzzahl anzeigen, sehen Sie den ASCII (*) Wert dieses Zeichens. Also, eine '9' erscheint als 57. Aber wenn du sie auf einen Charakter wirfst, bekommst du '9', also ist alles gut.

Denken Sie einmal so darüber nach: Wenn Sie das Zeichen '9' eingegeben haben, ist es unsinnig zu erwarten, dass short die Zahl 9 zurückgibt, denn welche Zahl würden Sie dann erwarten, wenn Sie ein% eingegeben hätten? Code%? Offensichtlich müssen Zeichen Zahlen zugeordnet werden. ASCII (*) ist ein System zum Zuordnen von Zeichen zu Zahlen. Und in diesem System entspricht das Zeichen "9" der Nummer 57, nicht der Nummer 9.

(*) Nicht unbedingt ASCII; es kann eine andere Kodierung sein, wie UTF-16; aber in der überwiegenden Mehrheit der Kodierungen und sicherlich in allen gängigen Kodierungen stimmen die ersten 127 Werte mit denen von ASCII überein. Und das schließt alle englischen alphanumerischen Zeichen und populäre Symbole ein.

    
Mike Nakis 06.12.2015 17:49
quelle
4

System ist eine letzte Klasse in java.lang package

Codebeispiel aus dem Quellcode von api

%Vor%

read() ist eine abstrakte Methode der abstrakten Klasse InputStream

%Vor%

Kurz von der api:

  

Liest eine Anzahl von Bytes aus dem Eingabestrom und speichert sie in   das Puffer-Array b. Die Anzahl der tatsächlich gelesenen Bytes wird als zurückgegeben   eine ganze Zahl. Diese Methode blockiert bis zum Ende der Eingabedaten   Datei wird erkannt oder eine Ausnahme wird ausgelöst.

von InputStream.html # read ()

    
subodh 16.03.2013 07:37
quelle
1

System.in.read() liest von die Standardeingabe .

Die Standardeingabe kann verwendet werden, um Eingaben von Benutzern in einer Konsolenumgebung zu erhalten. Da diese Benutzeroberfläche jedoch keine Bearbeitungsfunktionen bietet, ist die interaktive Verwendung der Standardeingabe auf Kurse beschränkt, die das Programmieren lehren.

Die meiste Verwendung der Standardeingabe in der Produktion findet in Programmen statt, die für den Betrieb in Pipelines von Unix-Befehlszeilen ausgelegt sind. In solchen Programmen stammt die Nutzlast, die das Programm verarbeitet, von der Standardeingabe, und das Ergebnis des Programms wird in die Standardausgabe geschrieben. In diesem Fall wird die Standardeingabe niemals direkt vom Benutzer geschrieben, es ist die umgeleitete Ausgabe eines anderen Programms oder der Inhalt einer Datei.

Eine typische Pipeline sieht folgendermaßen aus:

%Vor%

sort liest seine Daten von der Standardeingabe, die tatsächlich die Ausgabe ist des Befehls du . Die sortierten Daten werden in die Standardausgabe von sort geschrieben, die standardmäßig in der Konsole angezeigt wird und problemlos in eine Datei oder einen anderen Befehl umgeleitet werden kann.

Daher wird die Standardeingabe in Java vergleichsweise selten verwendet.

    
user4815162342 16.03.2013 07:26
quelle
1

Um die akzeptierte Antwort zu ergänzen, könnten Sie auch System.out.read() wie folgt verwenden:

%Vor%     
user9306701 04.02.2018 20:56
quelle
0

Es erlaubt Ihnen, von der Standardeingabe (hauptsächlich die Konsole) zu lesen. Diese SO-Frage kann Ihnen helfen.

    
Miguel Prz 16.03.2013 07:27
quelle
0

System.in.read () ist eine Lese-Eingabemethode für die Klasse System.in, die "Standard-Eingabedatei" oder 0 in einem herkömmlichen Betriebssystem ist.

    
Guru 18.11.2014 10:48
quelle
0

Dieses Beispiel soll helfen? Zusammen mit den Kommentaren, natürlich & gt;:)

WARNUNG: DER MANN IST IN DIESEM ABSATZ / POST EIN VERWENDETES FREQUENT WORD

Insgesamt empfehle ich, die Klasse Scanner zu verwenden, da Sie große Sätze eingeben können. Ich bin mir nicht ganz sicher, ob System.in.read solche Aspekte hat. Wenn möglich, korrigiere mich bitte.

%Vor%     
MavericksFoundation 16.10.2015 13:05
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ answer128138 ___
%Vor%

Wikipedia für mehr ... Ссылка

    
___ answer128105 ___
%Vor%

Ich habe diese Funktion ursprünglich von der großartigen Excel-Seite von Chip Pearson erhalten.

Pearsons Website

    
___ qstntxt ___

Was ist eine gute Implementierung einer IsLeapYear-Funktion in VBA?

Bearbeiten: Ich habe die if-then und die DateSerial-Implementierung mit Iterationen in einem Timer ausgeführt und die DateSerial war im Durchschnitt 1-2 ms schneller (5 Läufe von 300 Iterationen mit 1 durchschnittliche Zellenarbeitsblattformel funktioniert auch).

    
___ answer6978005 ___

Als eine Variante der Chip Pearson-Lösung könnten Sie auch

ausprobieren %Vor%     
___ answer130093 ___

Wenn Effizienz eine Überlegung ist und das erwartete Jahr zufällig ist, dann könnte es etwas besser sein, zuerst den häufigsten Fall zu machen:

%Vor%     
___ answer130864 ___

Ich fand dieses lustige auf CodeToad :

%Vor%

Obwohl ich ziemlich sicher bin, dass die Verwendung von IsDate in einer Funktion wahrscheinlich langsamer ist als ein paar if, elseifs.

    
___ answer19068554 ___
%Vor%     
___ answer25376739 ___
%Vor%     
___ tag123excel ___ Nur für Fragen zur Programmierung von Excel-Objekten oder -Dateien oder zur Entwicklung komplexer Formeln. Sie können das Excel-Tag mit VBA, VSTO, C #, VB.NET, PowerShell, OLE-Automatisierung und anderen programmierbezogenen Tags und Fragen kombinieren, falls zutreffend. Allgemeine Hilfe zu MS Excel für einzelne Arbeitsblattfunktionen ist bei Super User verfügbar. ___ tag123function ___ Eine Funktion (auch als Prozedur, Methode, Unterroutine oder Routine bezeichnet) ist ein Teil des Codes, der dazu bestimmt ist, eine einzelne, spezifische Aufgabe auszuführen. Verwenden Sie dieses Tag für Fragen, die speziell das Erstellen oder Aufrufen von Funktionen betreffen. Wenn Sie Hilfe beim Implementieren einer Funktion zum Ausführen einer Aufgabe benötigen, verwenden Sie stattdessen [algorithm] oder ein aufgabenspezifisches Tag. ___ tag123vba ___ Visual Basic für Applikationen (VBA) ist eine ereignisgesteuerte, objektorientierte Programmiersprache zum Schreiben von Makros, die für die gesamte Office-Suite und andere Anwendungen verwendet wird. VBA entspricht nicht VB.NET oder VBS; Wenn Sie in Visual Studio arbeiten, verwenden Sie [vb.net]. Wenn sich Ihre Frage speziell auf die Programmierung einer MS Office-Anwendung bezieht, verwenden Sie auch das entsprechende Tag: [Excel-VBA], [Zugriff-VBA], [Word-VBA], [Outlook-VBA] oder [Microsoft-Project-VBA] . ___ answer33808939 ___

Hier ist eine weitere einfache Option.

%Vor%

Wenn Leap_Day_Check = 28, dann ist es kein Schaltjahr, wenn es 29 ist.

VBA weiß, was das Datum vor dem 1. März in einem Jahr ist und wird es daher für den 28. oder 29. Februar für uns festlegen.

    
___ tag123excelvba ___ Excel-VBA (Visual Basic für Applikationen für Microsoft Excel) ist die vorherrschende Programmiersprache für Microsoft Office Excel. Es ist eine ereignisgesteuerte und objektorientierte Programmiersprache zum Schreiben von Makros für Microsoft Office-Anwendungen wie Excel. Verwenden Sie diesen TAG NICHT für VB.NET Fragen. ___ tag123codesnippets ___ Bei Problemen mit der Erstellung, Verwendung und Wartung von Code-Snippets. Wie finden Sie Leapyear in VBA? ___ answer43382759 ___

Ich sehe viele großartige Konzepte, die auf zusätzliches Verständnis hinweisen und die Verwendung von Datumsfunktionen, von denen man großartig lernen kann ... In Bezug auf Code-Effizienz ..  Betrachten Sie den Maschinencode, der für die Ausführung einer Funktion erforderlich ist

anstelle komplexer Datumsfunktionen verwende nur ziemlich schnelle Integer-Funktionen BASIC wurde auf GOTO gebaut Ich vermute, dass etwas wie unten ist schneller

%Vor%

Nein:

%Vor%     
___