Come uscita la sequenza '1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 ...' in Java? [chiuso]

StackOverflow https://stackoverflow.com/questions/489927

  •  20-08-2019
  •  | 
  •  

Domanda

Al momento sto iniziando a programmare con Java. Ho cercato di codificare la sequenza nel titolo come uscita in Java, ma io sono bloccato! Sto sperimentando con la per la funzione, ogni aiuto è il benvenuto;)

È stato utile?

Soluzione

System.out.println("1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0");

Ma sul serio, la gente, questa è una testata primo passaggio:

for(int i=1; i<100; i++){
    System.out.print("1 ");
    for(int j=0; j<i; j++){
        System.out.print("0 ");
    }
}

Se si cerca di informazioni di base su come iniziare, Google è tuo amico. Ad esempio, provare googling per "ciclo for Java" e si otterrà un sacco di buoni esempi. Inoltre, per conoscere le cose di base in qualsiasi lingua, una ricerca su Google per " ciao mondo" è molto affidabile.

Altri suggerimenti

Perché due anelli?

(convertito da C #, pardon eventuali errori di sintassi)

String s = "1 ";
for (int i = 0; i < 5; ++i)
{
  s = s + "0 ";
  System.out.print(s);
}

autocritica:

  • due cicli for (come soluzione di Michael Haren) sarebbe negare la copia della stringa
  • uno StringBuffer / StringBuilder negherebbe la copia della stringa

È possibile memorizzare il numero 10 in una variabile, poi in una stampa ciclo il numero, moltiplicarlo per 10 (che aggiunge uno zero alla sua rappresentazione decimale), e ripetere.

for (int i = 2; i < 64; i <<= 1)
    //System.out.print(Integer.toString(i, 2));
    System.out.print(Integer.toString(i, 2).replaceAll("[01]", "$0 "));

Questo non è davvero una questione di Fors, ma piuttosto di pensare algoritmico molto rudimentale. Hai una sequenza che è costituito da un "1", e poi qualcos'altro che cresce nel tempo", un altro '1', un'altra cosa, ecc Si può pensare a questi come due differenti serie che sono intercalati.

Quindi, struttura complessiva sarebbe qualcosa di simile:

while(... infinity?)
{
   System.out.print("1");
   doSomething(); 
}

Ora la cosa chiaramente è correlato al numero di iterazioni ( "tappe") del ciclo esterno o il conteggio di 1, quindi è necessario qualcosa di simile a:

int stage=0;
while(...infinity?)
{
   ++stage;
   System.out.print("1");
   for(int i=0; i<stage; ++i) System.out.print("0");
}

Se si sa quanti cicli è necessario passare attraverso, utilizzare un ciclo al posto di un po ', e aumentare il palcoscenico attraverso di essa.

O forse il tuo insegnante ti chiede di? Due annidati cicli for farà il trucco.

o in altro modo in un'altra lingua (Ruby):

4.times {|n| print 10**(n+1)}
for (int i = 1; i < 100000;)
{
    i = i * 10;
    System.out.print(i);              
}

o

int i = 1;

while (i < 100000)
{
    i = i * 10;
    System.out.print(i);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top