Wat bedoelt HackerRank met, ' Lees input van STDIN. Afdrukuitvoer naar STDOUT '? Wat is STDIN en STDOUT en hoe lees en schrijf ik ernaar in Java?


Beste antwoord

In java kun je class Scanner gebruiken om de invoer te lezen en System.out om de uitvoer af te drukken.

Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt(); // read an integer from input stream.

System.out.println(n) // print n

Soms krijg je echter een tijdslimiet overschreden (TLE) vanwege de prestaties van Scanner. U kunt in plaats daarvan BufferedReader gebruiken.

class InputReader {

public BufferedReader reader;

public StringTokenizer tokenizer;

public InputReader(InputStream stream) {

reader = new BufferedReader(new InputStreamReader(stream), 32768);

tokenizer = null;

tokenizer = null;

}

public String next() {

while (tokenizer == null || !tokenizer.hasMoreTokens()) {

try {

tokenizer = new StringTokenizer(reader.readLine());

} catch (IOException e) {

throw new RuntimeException(e);

}

}

return tokenizer.nextToken();

}

public int nextInt() {

return Integer.parseInt(next());

}

public long nextLong() {

return Long.parseLong(next());

}

}

Antwoord

Laat me proberen uit te leggen met Angry Professor probleem van HackerRank.

De volgende code leest van System.in en drukt de uitvoer af, de rest spreekt voor zich:

import java.io.*;

import java.util.*;

public class Solution {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

int t = in.nextInt();

for (int i = 0; i < t; i++) {

int nstudent = in.nextInt();

int threshold = in.nextInt();

int[] arrival = new int[nstudent];

for (int j = 0; j < nstudent; j++) {

arrival[j] = in.nextInt();

}

algo(arrival, threshold);

}

}

public static void algo(int[] arrival, int threshold){

//your implementation

}

}

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *