blue-phoenix
@blue-phoenix

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

別コード変換について

Q&A

Closed

あるコードについての質問です。
このJavaScriptの記述をJavaに変更したいのですが、どうすれば良いか御教授お願いします。

reader.on('close', () => {
const a = lines[0].split(' ').map(Number);
let i = -1;
while (a[i] !== -1) {
i++;
console.log(a[i]);
}
});

一応意味としては「長さがわからない数列 a が入力されて、
-1 が入力されるまで、受け取った数を改行区切りで出力」という事です。

while (true) {
int n = sc.nextInt();
if (n == -1) {
break;
}
System.out.println(n);
}
}}

自分なりに変換しても12345で終わって-1まで出ないです・・・。
ifに-1と表記しているのにどうしてこうなるのか。

0

3Answer

自分なりに変換しても12345で終わって-1まで出ないです・・・。

-1まで出力したいのであれば、値の出力をif文の前に書けばよいのではないでしょうか?
breakが呼ばれるとwhileループが終了するので、現状-1のとき出力されなくなっています。

while (true) {
    int n = sc.nextInt();
    System.out.println(n);
    if (n == -1) {
        break;
    }
}
2Like

Comments

  1. @blue-phoenix

    Questioner

    で、で、で、できた・・・if文上にprintを!!??
    こんな方法があるなんて、javaは本当に・・・。
    まだまだ研鑽を積む必要があります。
    と、とりあえずどうもありがとうございました!
    フォロー文に入れておきます。

提出用のプログラムとお見受けしますが,入力の仕様は提出先や問題が提示する仕様により異なりますので(だいたい標準入力だとは思いますが),必ず提出先のヘルプを確認してください.
入力の仕方自体はScannerをすでに使った経験がおありのようですので,説明するまでもないのでは?

異なる言語の仕様は結構互換性がなかったりするので,こんくらいなら移植を意識せず1から書いた方が楽です.
書いてみてどのように実装すべきかわからない部分をまずは特定してみてください.

1Like

Comments

  1. @blue-phoenix

    Questioner

    いつも御助言感謝します。
    1,2,3,4,5、-1と出るはずが、1,2,3,4,5で止まってしまって
    別の解答コードを見かけて相談しました。

自分なりに変換しても12345で終わって-1まで出ないです・・・。
ifに-1と表記しているのにどうしてこうなるのか。

そのIf文にbreak処理がありますが
breakはどのような処理か分かっていますか?

0Like

Comments

  1. @blue-phoenix

    Questioner

    条件が出たら中断するコードですよね?
    -1がでたら止まると学んだのですが、何故か1つ前まで寸止めで。
    そもそもこれを用いるのが良くないんですか?
  2. @blue-phoenix

    Questioner

    while内にn==-1を書いてもエラーになってしまいます。
    どうしていつもこうなるんだか。

Your answer might help someone💌