duvida exerc&iacute;cio 1 aula 4 - por que o looping n&atilde;o encerra?
gostaria de saber por que o looping do while não encerra, mesmo eu dando apenas um "enter" no console<br />```<br />import java.io.bufferedreader;<br />import java.io.ioexception;<br />import java.io
<p>o <code>while</code> está checando se o valor é null. enquanto não for null, continua infinitamente.</p>
<p>o enter não é null. se quiser checar uma linha vazia, faça algo como <code>while(!s.isempty())</code></p>
boa tarde, elias. precisa dentro do while. porém nesse caso seria interessante você usar o do{}while(), onde primeiro você informaria todos os dados e depois fária o teste. não irei colocar seu cód... Você já tentou o menu Preferências JDE, guia Simulator, depuração sub-seção? Há uma opção lá rotulado como "Não parar a execução quando uma exceção é capturado por catch (Throwable)". Talvez isso iria fazê-lo? (Isso pressupõe que você lançar o simulador do JDE) <pre><code>for (iterator&lt;string&gt; i = someiterable.iterator(); i.hasnext();) { string item = i.next(); system.out.println(item); } </code></pre><p>note que se você precisar usar <code>i.remove();</code> no seu loop, ou acessar o iterador real de alguma forma, você não pode usar o idioma <code>for ( : )</code>, já que o iterador é meramente inferido.</p><p>como foi observado por denis bueno, este código funciona para qualquer objeto que implemente a interface <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/iterable.html"><code>iterable</code></a> .</p><p>além disso, se o lado direito do idioma <code>for (:)</code> for um objeto <code>array</code> em vez de <code>iterable</code>, o código interno usará um contador de índice int e verificará <code>array.length</code>. veja o <a href="http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.14.2">java language specification</a> .</p> <p>se bem entendi, você deseja enviar dados para um programa em execução dentro de uma sessão de tela. você pode fazer isso com o comando <code>stuff</code> da tela. use a tela <code>-x</code> opção para executar um comando em uma sessão de tela sem anexar a ela.</p><pre><code>screen -s sessionname -p windowname -x stuff 'command1 command2 ' </code></pre><p>se você quiser ver a saída do programa, consulte os comandos <code>hardcopy</code>, <code>log</code> e <code>logfile</code>.</p> Estou com o mesmo problema. É um tablet Galaxy TAB 10.1.... Na versão de fábrica não abre, pede pra checar conexão e horário. Se atualizar para a versão do PlayStore, quando abre pede pra atualizar, e fica nesse looping, abrindo e pedindo pra atualizar direto... Creio que deva ter relação com a versão do Android, já que tablets mais antigos não tem atualização disponível. O meu tem Android 4.0.3. <p>na verdade, marcar uma tarefa como concluída não a exclui, mesmo depois de escolher "limpar tarefas concluídas". você sempre pode ver as tarefas concluídas. na visualização do console ( <a href="https://mail.google.com/tasks/a/yourdomain.com/canvas">https://mail.google.com/tasks/a/seudominio.com/canvas</a> ) basta escolher a visualização "tarefas concluídas". no gmail ou gcal, você pode escolher "ações/exibir tarefas concluídas".</p> Bom, testei em outro navegador e funcionou... Mas curioso, quando tento entrar com outra conta(no opera) o erro não ocorre, mas quando retorno para está ele aparece. Vou tentar reinstalar o Opera apagando qualquer dado salvo,  ou criar outra conta rsrsrsrsrs (Opera Forever) Obrigado pela atenção...   
Provavelmente o erro seja que o navegador salvou algum detalhe da minha conta que gera conflito na página inicial, e a limpeza de navegar não foi profunda o suficiente para corrigir. quando se trata de jogos o melhor seria passa os jogos pra verifica se alguém já conseguiu faze ele roda no linux ou no caso vocês pode pesquisar mesmo ai já pode aprende a como tira sua dúvida em jogos que queira joga. <p>você precisa esperar para apresentar o controlador de exibição restrita até o próximo ciclo de execução. acabei usando um bloco (para tornar as coisas mais simples) para agendar a apresentação para o próximo ciclo de execução:</p><p><strong> atualização: </strong><br> como mencionado por mark amery abaixo, apenas um simples <code>dispatch\_async</code> funciona, não há necessidade de um temporizador:</p><pre><code>dispatch\_async(dispatch\_get\_main\_queue(), ^(void){ [self.container presentmodalviewcontroller:nc animated:yes]; }); </code></pre><hr><pre><code>/* present next run loop. prevents "unbalanced vc display" warnings. */ double delayinseconds = 0.1; dispatch\_time\_t poptime = dispatch\_time(dispatch\_time\_now, delayinseconds * nsec\_per\_sec); dispatch\_after(poptime, dispatch\_get\_main\_queue(), ^(void){ [self.container presentmodalviewcontroller:nc animated:yes]; }); </code></pre> <p>sempre que você retornar um objeto, retornará uma referência ao objeto. da mesma forma, quando você está passando um objeto, está passando uma referência. no entanto, passar um objeto como argumento <em>pode</em> ser diferente do que apenas alterar um objeto no escopo global, como mostram esses exemplos. isso ocorre porque a referência ao objeto é transmitida por valor.</p><p>se você estiver alterando os membros de um objeto, se você o passa como argumento ou apenas atualiza o objeto global não faz diferença. de qualquer maneira, você está trabalhando com o mesmo objeto.</p><p>exemplo 1:</p><pre><code>var object = {foo:'original'}; function changeobject() { object.foo = 'changed'; return object; } console.log(changeobject()); // outputs {foo:'changed'} console.log(object); // outputs {foo:'changed'} </code></pre><p>exemplo 2:</p><pre><code>var object = {foo:'original'}; function changeargument(object) { object.foo = 'changed'; return object; } console.log(changeargument(object)); // outputs {foo:'changed'} console.log(object); // outputs {foo:'changed'} </code></pre><p>por outro lado, se você estiver substituindo o objeto por um novo objeto, a alteração não persistirá se você fizer isso no argumento, mas persistirá se você fizer isso no objeto global. isso ocorre porque o argumento passa a referência ao objeto por valor. depois de substituir esse valor por uma referência a um novo objeto, você não está mais falando do mesmo objeto.</p><p>exemplo 3:</p><pre><code>var object = {foo:'original'}; function replaceobject() { object = {foo:'changed'}; return object; } console.log(replaceobject()); // outputs {foo:'changed'} console.log(object); // outputs {foo:'changed'} </code></pre><p>exemplo 4:</p><pre><code>var object = {foo:'original'}; function replaceargument(object) { object = {foo:'changed'}; return object; } console.log(replaceargument(object)); // outputs {foo:'changed'} console.log(object); // outputs {foo:'original'} </code></pre>