this अधिक कुशल समाधान के लिए उत्तर देखें।
यह एक बहुत बदसूरत समाधान है, लेकिन आप Scanner
के आसपास एक रैपर वर्ग बना सकते हैं जो दो आंतरिक Scanner
ऑब्जेक्ट्स रखता है। आप अन्य
से आगे दूसरा स्कैनर प्राप्त करके peek()
कार्यक्षमता प्राप्त कर सकते हैं यह एक बहुत ही बुनियादी समाधान है (केवल आपको यह पता करने के लिए कि मैं किस बारे में बात कर रहा हूं) और जो भी आपको चाहिए (लेकिन आपको केवल उन हिस्सों को लागू करने की आवश्यकता होगी जिन्हें आप उपयोग करेंगे)। (यह भी, यह untested है, तो इसे नमक के अनाज के साथ ले लो)।
import java.util.Scanner;
public class PeekableScanner
{
private Scanner scan1;
private Scanner scan2;
private String next;
public PeekableScanner(String source)
{
scan1 = new Scanner(source);
scan2 = new Scanner(source);
next = scan2.next();
}
public boolean hasNext()
{
return scan1.hasNext();
}
public String next()
{
next = (scan2.hasNext() ? scan2.next() : null);
return scan1.next();
}
public String peek()
{
return next;
}
}
स्रोत
2010-11-26 21:53:00
यह मेरे लिए होता है कि आप शायद यह कर सकता है एक स्कैनर में केवल 'अगली()' ऑब्जेक्ट का संदर्भ रखते हुए। –
ठीक है, मैंने उस उत्तर को एक और उत्तर के रूप में जोड़ा (मैं इसे केवल इस में जोड़ना नहीं चाहता था क्योंकि मैं इसे एक संभावित समाधान के रूप में रखना चाहता था)। कुछ मामलों में (यदि आप अपने स्कैनर के साथ काफी जटिल चीजें कर रहे हैं) तो इसे लपेटना आसान हो सकता है, लेकिन दूसरा समाधान अधिक कुशल है। –
ध्यान दें कि यदि आपके स्ट्रिंग खाली थे या केवल व्हाइटस्पेस निहित है तो आपका PeekableScanner कन्स्ट्रक्टर NoSuchElementException फेंक देगा। –