Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #12857
| Path | csiph.com!news.swapon.de!aioe.org!.POSTED!not-for-mail |
|---|---|
| From | Robert Hartmann <Robert_Hartmann@gmx.net> |
| Newsgroups | de.comp.lang.java |
| Subject | System.setIn + zwei Scanner auf ByteArrayInputStream |
| Date | Fri, 6 Nov 2015 21:13:35 +0100 |
| Organization | Aioe.org NNTP Server |
| Lines | 78 |
| Message-ID | <n1j1k4$acb$1@speranza.aioe.org> (permalink) |
| NNTP-Posting-Host | 8zmAJu3QidHcjh2saS/aQA.user.speranza.aioe.org |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8; format=flowed |
| Content-Transfer-Encoding | 8bit |
| X-Complaints-To | abuse@aioe.org |
| User-Agent | Mozilla/5.0 (Windows NT 5.1; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
| X-Notice | Filtered by postfilter v. 0.8.2 |
| X-Mozilla-News-Host | news://news.aioe.org:119 |
| Xref | csiph.com de.comp.lang.java:12857 |
Show key headers only | View raw
Hallo zusammen,
Unabhängig von der grundsätzlichen Frage,
ob man zwei verschiedene java.util.Scanner-Instanzen
auf System.in überhaupt "los lassen" können sollte,
stellt sich mir nun die tatsächlich praktische Frage:
Warum erhält im unteren Beispiel, die zweite
Scanner-Instanz nicht den Teil "Welt" ?
Wenn ich System.in per System.setIn auf
den ByteArrayInputStream umbiege?
Aufschließende Frage:
Wenn ich ein Modul-Teste (per JUnit4),
und dieses Modul nutzt den Scanner,
wie kann ich System.in so umbiegen,
dass eine beliebige Anzahl von Instanzen des Scanners
die vorgegebenen Testeingaben zu Gesicht bekommt?
Konkreter:
Es soll also für den Test kein Unterschied machen,
ob im zu testenden Modul
Scanner sc = new Scanner(System.in);
String A=sc.next(); String B=sc.next()
oder
Scanner scA = new Scanner(System.in);
Scanner scB = new Scanner(System.in);
String A=scA.next(); String B=scB.next()
steht.
Ich wünsche ein schönes Wochenende,
Gruß Robert
/******** 8< ****************/
import java.io.ByteArrayInputStream;
import java.util.Scanner;
public class SystemInTest {
public static void main(String[] args) {
ByteArrayInputStream inbuf
= new ByteArrayInputStream("Hallo\nWelt\n".getBytes());
System.setIn(inbuf);
Scanner sc1 = new Scanner(System.in);
String s1 = sc1.next();
if (sc1.hasNext()){
System.out.println("sc1: found next okay, open new Scanner:");
Scanner sc2 = new Scanner(System.in);
if (sc2.hasNext()){
String s2 = sc2.next();
System.out.println("S2= "+s2);
} else {
System.err.println("sc2 no next");
}
sc2.close();
}
System.out.println("S1= "+s1);
sc1.close();
}
}
Back to de.comp.lang.java | Previous | Next — Next in thread | Find similar
System.setIn + zwei Scanner auf ByteArrayInputStream Robert Hartmann <Robert_Hartmann@gmx.net> - 2015-11-06 21:13 +0100 Re: System.setIn + zwei Scanner auf ByteArrayInputStream Robert Hartmann <Robert_Hartmann@gmx.net> - 2015-11-09 19:07 +0100
csiph-web