2010-02-21 14 views
8

मैं एक जावा शुरुआत करने वाला हूं, कृपया इसे ध्यान में रखें। मुझे एक प्रोग्राम बनाना है जो एक संख्या को पढ़ता है, और उसके बाद विस्मयादिबोधक चिह्न "!" की मात्रा प्रदर्शित करता है।जावा दोहराना चरित्र

यह मैं क्या है:

import java.util.Scanner; 
import java.io.PrintStream; 

class E_HerhaalKarakter1 { 

PrintStream out; 

E_HerhaalKarakter1() { 
    out = new PrintStream(System.out); 
} 

String printUitroeptekens (int aantal) { 
    String output = "!" 

    for (int i = 0; i <= aantal; i++) { 
    output.concat("!"); 
    } 
    return output; 
} 

void start() { 
    Scanner in = new Scanner(System.in); 

    out.printf("Hoeveel uitroeptekens wilt u weergeven?\n"); 

    if(in.hasNext()) { 
    out.printf("baldbla"); 
    printUitroeptekens(in.nextInt()); 
    out.printf("%s",output); 
    } 
} 

public static void main (String[] argv) { 
    new E_HerhaalKarakter1().start(); 
} 
} 

धन्यवाद

+3

अंग्रेजी (यहां तक ​​कि कोड में) का उपयोग करें जब पूछ एक अंग्रेजी मंच पर सवाल। –

+3

वास्तव में कम से कम संपूर्ण कोड अंग्रेजी (सभी पहचानकर्ता; कक्षा नाम, विधि नाम, variablenames) रखें। संदेशों को डच में रखा जा सकता है, लेकिन इसे स्पष्ट करने के लिए अधिमानतः एक अंग्रेजी टिप्पणी जोड़ें। – BalusC

+1

संभावित डुप्लिकेट: http://stackoverflow.com/questions/1235179/simple-way-to-repeat-a-string-in-java यहां देखें: [कॉमन्स लैंग स्ट्रिंगउट्स.प्रिपेट()] (http: // commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.html) –

उत्तर

4

आपका कार्यक्रम काम नहीं करता क्योंकि String.concat() स्ट्रिंग परिवर्तन नहीं करता है, लेकिन एक नई स्ट्रिंग देता है। उदाहरण के लिए, "ए" .concat ("बी") "ab" है। तो, आपको output.concat("!") के बजाय output = output.concat("!") लिखना चाहिए।

हालांकि, यह बहुत अक्षम होगा क्योंकि एन विस्मयादिबोधक चिह्नों की एक स्ट्रिंग बनाने से ओ (एन^2) समय लगेगा (Google या विकिपीडिया पर "बड़ा ओह नोटेशन" देखें, Schlemiel the Painter's algorithm भी देखें)।

StringBuilder कक्षा में दस्तावेज़ों को देखें और इसका उपयोग करें। यह भागों से तार बनाने के लिए बनाया गया था।

+0

यदि दक्षता चिंता का विषय है, तो आपको निश्चित रूप से ध्यान रखना चाहिए कि इस समस्या को हल करने के लिए किसी भी तरह का संयोग अनावश्यक है। केवल ओमेगा (एलजी एन) स्मृति आवश्यक है। –

3

ऐसा लगता है कि आप बहुत करीब हैं, टॉम।

पहले, जावा में एक String का निर्माण करने के सामान्य तरीके से StringBuilder वर्ग के साथ, है इस तरह: फिर

StringBuilder buf = new StringBuilder(aantal); 
while (aantal-- > 0) 
    buf.append('!'); 
return buf.toString(); 

, आप start() विधि के दायरे में output नामक एक चर घोषित करने के लिए की जरूरत है, और उस चर को printUitroeptekens() विधि का परिणाम असाइन करते हैं, इस तरह:

String output = printUitroeptekens(in.nextInt()); 
out.printf("%s%n", output); 
3

आपका कार्यक्रम इस संरचना होनी चाहिए:

+०१२३५१६४१०६१
read number x 
repeat this x times 
    print '!' 

कथन में कुछ भी नहीं है जो आपको वास्तव में एक स्ट्रिंग बनाने की आवश्यकता है जहां तक ​​मैं कह सकता हूं।

+2

यह समस्या को समझने के लिए शायद एक ** सरलीकृत ** उदाहरण है। असली समस्या शायद अधिक जटिल हो सकती है। – Martin

21

आप वास्तव में एक स्ट्रिंग जो विस्मयादिबोधक चिह्न के एक्स संख्या में शामिल हैं बनाने के लिए की आवश्यकता है, तो यहाँ दोहराया संयोजन के बिना यह करने के लिए एक तरीका है:

char[] exmarks = new char[aantal]; 
Arrays.fill(exmarks, '!'); 
String exmarksString = new String(exmarks); 
संबंधित मुद्दे