Programim dhe zhvillim, javascript, python, php, html

Java printon një varg që përmban shumë numra të plotë

Sapo kam filluar të mësoj java sot dhe duket se nuk mund ta kuptoj këtë. Unë jam duke ndjekur tutorialin në Learnjavaonline.org i cili ju mëson disa gjëra dhe më pas ju kërkon të shkruani një kod për të bërë një gjë specifike, ai më pas kontrollon daljen për të parë nëse është i saktë. Puna është se nëse nuk është e saktë, nuk thotë pse, ose nuk ju jep një shembull të kodit të saktë.

Kërkon që unë të nxjerr një varg duke thënë "H3110 w0r1d 2.0 true" duke përdorur të gjithë primitivët

kam ardhur me këtë

public class Main {
public static void main(String[] args) {
    char h = 'H';
    byte three = 3;
    short one = 1;
    boolean t = true;
    double ten = 10;
    float two = (float) 2.0;
    long won = 1;
    int zero = 0;

    String output = h + three + one + ten + " " + "w" + zero + "r" + won + "d " + two + " " + t;
    System.out.println(output);
}

}

por nxjerr 86.0 w0r1d 2.0 true

si mund ta bëj që të mos i shtojë të gjithë numrat e plotë, por t'i shfaqë ato me radhë?

04.08.2013

  • Përdorni String.format si në këtë post 04.08.2013

Përgjigjet:


1

Ju ose mund t'i konvertoni numrat tuaj në një varg duke përdorur metodat toString ose valueOf të klasave mbështjellëse (me mend se nuk jeni ende atje), ose thjesht futni të gjithë primitivët tuaj në linjën e printimit pa String output.

system.out.println(h + three + one + ten + " " + "w" + zero + "r" + won + "d " + two + " " + t);

E tëra çfarë ju duhet të kërkoni është se ka një varg në deklaratën e printline. Do të thotë nëse dëshironi të printoni vetëm llojin tonë të të dhënave të bazuar në numra, mund të përdorni system.out.println("" + youNumberVariable).

Do të ekzistonte gjithashtu opsioni për të shtuar një varg bosh në fillim të deklaratës suaj të prodhimit output = "" + theRest; për të detyruar të gjitha vlerat e mëposhtme në varg, siç bën në deklaratën e printline.

Shumica e tij nuk është një kodim shumë i bukur, por do të mjaftojë plotësisht për procesin e të mësuarit.

04.08.2013
  • Faleminderit, kjo është jashtëzakonisht e dobishme. Unë do të votoja nëse do të kisha mjaftueshëm reputacion (hera e parë duke përdorur stackoverflow) :P 04.08.2013

  • 2

    Problemi me këtë linjë:

    String output = h + three + one + ten + " " + "w" + zero + "r" + won + "d " + two + " " + t;
    

    është që operacionet kryhen nga e majta në të djathtë, kështu që së pari shumon h + three (që vlerësohet në int) dhe më pas one dhe më pas ten. Deri në atë pikë ju keni një vlerë numerike (një int) që më pas do të "përmblidhet" në një String. Provoni diçka si kjo:

    String output = "" + h + three + one + ten + " " + "w" + zero + "r" + won + "d " + two + " " + t;
    

    Në këtë rast të dytë shprehja juaj do të fillojë me një objekt String, duke vlerësuar pjesën tjetër të operacioneve si Strings.

    Sigurisht që mund të përdorni "" në fillim ose çdo vlerë tjetër që vlerësohet në String, si String.valueOf(h). Në rastin e fundit, nuk do të keni nevojë të përdorni String.valueOf() për operandët e tjerë, pasi i pari është tashmë një varg.

    04.08.2013
  • kjo është ajo që kisha supozuar, por nuk dija një rrugëdalje. a ka një mënyrë tjetër për ta bërë këtë pa përdorimin e një hapësire në fillim të vargut? 04.08.2013
  • Ju mund të përdorni String.valueOf(h) (vetëm për vlerën e parë, jo të gjitha), kështu që do të filloni shprehjen tuaj me një varg pa përdorur . Unë do të përditësoj përgjigjen time me këtë. 04.08.2013

  • 3

    Një mënyrë e lehtë dhe e shëmtuar për ta bërë këtë do të ishte përdorimi i String.valueOf për çdo vlerë numerike.

    As in:

    String output = h + String.valueOf(three); // + etc...
    

    Modifiko

    Qasja e morgano është gjithashtu plotësisht e vlefshme - +1 për këtë.

    Në një temë më të përgjithshme, mund të dëshironi të përdorni String.concat për lidhjen String, ose edhe më mirë, një objekt StringBuilder.

    Kjo faqe SO përmban shumë informacione që mund të përdorni për këtë çështje.

    04.08.2013

    4

    Do të përdorja String.valueOf për të hedhur në mënyrë eksplicite çdo vlerë numerike te String përpara se të shtohej. Si kështu:

    String output = h + String.valueOf( three ) + String.valueOf( one ) + String.valueOf( ten ) + " " + "w" + String.valueOf( zero ) + "r" + String.valueOf( won ) + "d " + String.valueOf( two ) + " " + t;
    
    04.08.2013

    5

    Truku është që të detyroni përpiluesin të interpretojë + si bashkim vargjesh (i cili më pas i konverton në heshtje numrat në vargje) në vend që të shtojë dy numra. Kjo do të thotë se një nga dy argumentet për + duhet të jetë një varg, dhe jo - si tre argumentet e tua të para - numra (dhe po, një char është një numër).

    Nuk është tipike në kodin në natyrë të dëshironi që numrat të jenë drejtpërdrejt ngjitur me njëri-tjetrin, por të kenë një hapësirë ​​midis tyre, si:

    String output = h + " " + three + " " + one + " " + ten + " " + "w" + zero + "r" + won + "d " + two + " " + t;
    

    Nëse vërtet dëshironi të mos keni hapësira, atëherë vetëm le të jetë argumenti i parë vargu bosh:

    String output = "" + h ....
    

    Ju gjithashtu mund të ndryshoni h nga char në String.

    04.08.2013

    6

    Rezultati që po merrni është sepse, në thelb, po bëni operacione aritmetike në ndryshore numerike përpara se t'i printoni ato kur mbështeteni në hedhjen e nënkuptuar.

    Edhe Char është një numër! H ka vlerën 72 në tabelën ascii, kështu që në thelb po udhëzoni programin Java të printojë rezultatin e: 72 + 3 + 1 + 10.0 (që është e barabartë me 86.0)

    Lidhja e vargjeve me hyrje të përziera të numrave dhe simboleve si kjo mund të jetë problematike meqenëse transmetimi i nënkuptuar është në lojë. Për t'u siguruar që gjërat janë ashtu siç dëshironi, pa përdorur transmetim të qartë, mbase përdorni ndonjë varg midis secilës vlerë numerike, si kjo:

        char h = 'H';  // This is a numeral! Capital H has value 72 in Ascii table
        byte three = 3;
        short one = 1;
        boolean t = true; // not a numeral
        double ten = 10;
        float two = (float) 2.0;
        long lOne = 1;
        int zero = 0;
    
        System.out.println(h + "" + three + "" + one + "" + (int) ten + " w"  
            + zero + "r" + lOne + "d " + two + " " + t );
    

    Vini re se si më duhej të hidhja ten në tipin int, për të humbur numrin dhjetor...

    Shembulli i mësipërm nuk është megjithatë një shembull i mirë i përdorimit të lidhjeve të vargjeve! Për një zgjidhje të duhur, dhe kjo ndoshta më shumë për njerëzit me më shumë përvojë, është të provoni të përdorni formatimin e vargut, si kjo:

    System.out.println(String.format("%s%s%s%s w%sr%sd %s %s", h, three, one,
        (int) ten, zero, lOne, two, t));
    

    Një mënyrë tjetër është përdorimi i formatimit të mesazheve si kjo, ndoshta jo zgjidhja më e mirë për këtë detyrë pasi float do të printohet si një numër i plotë. Gjithashtu duhet të importojë java.text.MessageFormat

    // please note: the double and the float won't print decimals!
    // note: import java.text.MessageFormat for this
    System.out.println(MessageFormat.format("{0}{1}{2}{3} w{4}r{5}d {6} {7}", h,
        three, one, (int) ten, zero, lOne, two, t));
    

    Më shumë shembuj nga tabela Ascii.

    20.05.2019

    7
  • Mirë se vini në Stack Overflow! Ju mund të futni tekst katër hapësira për të krijuar një bllok kodi. Gjithashtu, a do të mund të shtonit ndonjë shpjegim në kodin tuaj? 07.08.2016
  • Ndonëse kjo copëz kodi mund ta zgjidhë pyetjen, duke përfshirë një shpjegim vërtet ndihmon në përmirësimin e cilësisë e postimit tuaj. Mos harroni se po i përgjigjeni pyetjes për lexuesit në të ardhmen dhe ata njerëz mund të mos i dinë arsyet e sugjerimit të kodit tuaj. Ju lutemi gjithashtu përpiquni të mos e mbushni kodin tuaj me komente shpjeguese, kjo zvogëlon lexueshmërinë si të kodit ashtu edhe të shpjegimeve! 07.08.2016
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..