मुझे खाली इनपुट के जवाब देने के लिए मेरा प्रोग्राम प्राप्त करने में परेशानी हो रही है। उदाहरण के लिए, कहें कि मैं उपयोगकर्ता को BigDecimal
के साथ-साथ मुद्रा प्रकार के साथ पैसे के लिए मूल्य दर्ज करने के लिए संकेत देना चाहता हूं। सवाल यह है कि प्रश्न में कार्यक्रम कैसा दिखता है।रिक्त इनपुट को स्वीकार करने के लिए जावा स्कैनर कैसे प्राप्त करें?
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the amount of money "
+ "and specify currency (USD or CNY): ");
// initialize variable moneyInput
BigDecimal moneyInput;
// check if moneyInput is numeric
try {
moneyInput = input.nextBigDecimal();
} catch (InputMismatchException e){
System.err.println("InputMismatchException: non-numeric value");
return;
}
// specify currency of moneyInput
String currencyType = input.next();
...
}
तो यहां, 100.00 USD
जैसे इनपुट, ठीक काम करता है।
Enter the amount of money and specify currency (USD or CNY): 100.00 USD
$100.00 USD ≈ ¥670.17 CNY
ASDF USD
की तरह एक इनपुट उचित रूप से त्रुटि संदेश प्राप्त होते हैं।
Enter the amount of money and specify currency (USD or CNY): ASDF USD
InputMismatchException: non-numeric value
लेकिन, मैं कैसे कार्यक्रम, खाली आदानों का जवाब करने के लिए या तो तुरंत वापस कुंजी दबाने या पहली पंक्ति में रिक्त स्थान का एक समूह में प्रवेश करने के लिए मजबूर करते हैं? उदाहरण के लिए:
Enter the amount of money and specify currency (USD or CNY):
1000.00 USD
$1000.00 USD ≈ ¥6701.70 CNY
उपरोक्त उदाहरण में, उपयोगकर्ता केवल अनिश्चित काल तक कुछ पठनीय (मान्य है या अमान्य) दर्ज किया है कुंजी दबाएं कर सकते हैं। मैं यह जांचने के लिए कुछ तरीका कार्यान्वित करना चाहता हूं कि उपयोगकर्ता ने कुछ भी सार्थक दर्ज किए बिना रिटर्न कुंजी दबाया है या नहीं।
एक और परिणाम जो मुझे नहीं पता कि कैसे खाते हैं, यह है कि यदि उपयोगकर्ता केवल मौद्रिक मूल्य में प्रवेश करता है, तो अंततः मुद्रा को इनपुट करने से पहले [वापसी] प्रेस का एक गुच्छा दबाता है।
उदाहरण:
Enter the amount of money and specify currency (USD or CNY): 100.00
USD
$100.00 USD ≈ ¥670.17 CNY
मैं इस कार्यक्रम एक अंकीय मान के बाद Please specify the currency:
की तरह कुछ के साथ उपयोगकर्ता संकेत करने के लिए कैसे मिलता है है इनपुट और उपयोगकर्ता प्रेस [वापसी]? जैसे
Enter the amount of money and specify currency (USD or CNY): 100.00
Please specify the currency: USD
$100.00 USD ≈ ¥670.17 CNY
कुछ मैं करने के लिए कोशिश कैच ब्लॉक के बाद वाले हिस्से को बदलने के द्वारा ऊपर कार्यक्षमता को प्राप्त करने में सक्षम था:
input.nextLine();
System.out.print("Please specify the currency: ");
String currencyType = input.nextLine();
लेकिन इस पद्धति का उपयोग, कार्यक्रम उपयोगकर्ता अनुमति देने के लिए क्षमता खो देता है पहले उदाहरण में, एक पंक्ति में moneyInput
और currencyType
दोनों इनपुट करने के लिए। (और फिर भी, अभी तक कुछ पठनीय अंत में इनपुट होने तक इन सभी संकेतों के लिए अनिश्चित काल तक [वापसी] प्रेस करने में सक्षम होने की समस्या है)।
लंबी पोस्ट के लिए पढ़ने और खेद के लिए धन्यवाद। और कभी कभी परस्पर विरोधी - -
हाय, क्या आप कृपया एक ही परिणाम प्राप्त करने के लिए 'line.split (" \\ s + ") 'के साथ पार्स विधि का उपयोग कैसे कर सकते हैं? मैं उस विधि से परिचित नहीं हूं इसलिए मुझे वाक्यविन्यास के साथ कठिन समय हो रहा है। धन्यवाद –
और उदाहरण जोड़े गए। – dimo414
ठीक है, मैं अलग-अलग जांच कैसे कर सकता हूं कि 'मुद्रा' मान्य है या नहीं? मैं इसे 'moneyInput' के साथ उसी तरह कार्य करना चाहता हूं, यानी यदि '100.00 abc' या' 100.00' जैसे कुछ दर्ज किया गया है, तो उपयोगकर्ता को बार-बार' मुद्रा' के लिए संकेत दिया जाता है, और एक बार जब वे वैध मुद्रा दर्ज करते हैं, यूएसडी ', कार्यक्रम सामान्य रूप से फिर से शुरू होता है। मैंने मुद्रा की जांच करने के लिए अंदर एक और डू-लूप लूप का उपयोग करने की कोशिश की, और यह एक खाली इनपुट दर्ज किए जाने के अलावा काम करता था, जो मूल रूप से एक ही समस्या है जो मेरे पास इस पोस्ट की शुरुआत में थी (यहां मेरा कोड है: http: // पेस्टबिन .com/raw/CT0qjBPk और प्रोग्राम स्क्रीनशॉट: http://imgur.com/a/mjfaL)। –