質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

5回答

698閲覧

課題1(homework1-1.js)

kotosato

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/06/24 10:08

課題:0から23までのいずれかの値である整数hourを考える。このときhourが0から11までのときは「午前xx時です」、12のときは「正午です」、13から23までのときは「午後xx時です」と表示するプログラムを作成せよ。また、hourの値を様々に変えてプログラムが正しく動作していることを確かめよ。

私の回答:
let hour = 1;
if (hour<=11) {
console.log(午前${hour}時です);
} else if (hour = 12) {
console.log(正午です)}
else (hour>=13) ;{
console.log(午後${hour}時です);
}
実行すると、consoleに'午前1時です'
'午後1時です'と表示されてしまいます。
どこをどのように直せばよいのか、ご教示下さい。宜しくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/06/24 10:44

課題でしたら出題者に聞きましょう。 いずれにしてもコード提示するときはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564
kotosato

2021/06/24 12:06

ご免なさい。次回から気をつけます!
YT0014

2021/06/24 12:34

編集可能ですので、次回からではなく、今回も、コードのマークダウンのcode機能の利用と、重複元の削除はご対応ください。
guest

回答5

0

整数hourは0~23までの整数であるということを前提とします。

JavaScript

1let hour = 1; 2if (hour <= 11) { 3 console.log(`午前${ hour }時です`); 4} else if (hour === 12) { 5 console.log("正午です") 6} else { 7 console.log(`午後${ hour }時です`); 8}

投稿2021/06/24 10:57

編集2021/06/24 11:59
root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/06/24 11:49

> 0から23までのいずれかの値である整数hourを考える。 0 から 23 までの整数という条件があります。 最後の else は不要でしょう。 例外をスローするべきかもしれませんが、課題なのでそれも無用だと思います。
root_jp

2021/06/24 11:50

おっしゃる通り、確かにそこも前提仕様ですね。 削除します。
Zuishin

2021/06/24 11:51

また、11.5 は 0 ~ 23 の数値なので、この回答のエラーメッセージでは不適切だと思います。
root_jp

2021/06/24 11:56

11.5は少数であり、整数を前提としていたためなのですが、そもそも0~23という前提が漏れてました。
kotosato

2021/06/24 12:09

回答していただいた皆様方、ありがとうございました! 大きな力になっています。
guest

0

else (hour>=13) ; の末尾のセミコロン(;)を削除すれば、正しく動くと思われます。

まず、見づらいので整形しましょう。

javascript

1let hour = 1; 2if (hour<=11) { 3 console.log(午前${hour}時です); 4} else if (hour = 12) { 5 console.log(正午です) 6} else (hour>=13) ; { 7 console.log(午後${hour}時です); 8}

セミコロンは行の区切りと見なされるので、条件文がそこで終わってしまいます。

最後の console.log(午後${hour}時です); が条件文に関係なく実行されてしまうため、
'午前1時です' '午後1時です'と表示されてしまうのです。

また、以下の問題点もあります。

(hour = 12) としていますが、=は代入を意味しています。
(hour === 12) にしましょう。

else (hour>=13) という書き方がおかしいです。
elseはそれまでの条件分岐以外という意味になるので、(hour>=13) は不要です。

以下のようなコードにするのが正しいのではないでしょうか。

javascript

1let hour = 1; 2if (hour<=11) { 3 console.log(午前${hour}時です); 4} else if (hour === 12) { 5 console.log(正午です) 6} else { 7 console.log(午後${hour}時です); 8}

投稿2021/06/24 10:36

so9999

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

root_jp

2021/06/24 11:06

これでは「午前-1時です」と出たり、「午後25時です」のように表示されてしまい ・0から11までのときは「午前xx時です」 ・12のときは「正午です」 ・13から23までのときは「午後xx時です」 上記の仕様通りではなくなってしまうので、範囲を絞る必要がありますね。
kotosato

2021/06/24 11:48

早速のご指導ありがとうございました。もっと掘り下げて考えてみます。
root_jp

2021/06/24 11:54

> so9999さん 仕様の中に、整数hourは0~23までと決められていたので、これで問題ありませんでした。 失礼しました。
kotosato

2021/06/24 12:38

とんでもございません。こちらこそありがとうございました!!
guest

0

回答にならないかもしれませんが・・・

else (hour>=13)
こういう構文大丈夫なのですかね?

else ifにするかelseだけでカッコの部分は不要なのではないかなと。

投稿2021/06/24 10:29

udon-ken

総合スコア657

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kotosato

2021/06/24 11:52

ご指導ありがとうございました。仰る通りでした。全くの初心者の私にとっては十分な回答でした。
YT0014

2021/06/25 02:21

このミスがあるため、 else { (hour>=13) } と解釈され、セミコロンが必要というエラーメッセージが発生したのではないでしょうか? エラーメッセージが示した箇所にエラーがあるとは限らないので、周辺のチェックもするようにしてください。
guest

0

Javascript

1コード 2```let hour = 23; 3if (hour <=23) { 4if (hour <= 11) { 5 console.log(`午前${hour}時です`); 6} else if (hour === 12) { 7 console.log('正午です'); 8} else if (13 <= hour <= 23) { 9 (hour = hour - 12); 10 console.log(`午後${hour}時です`); 11} else { 12 console.log(null); 13} 14}

投稿2021/06/26 00:23

kotosato

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

javascript

1const times=Array(24).fill(null).map((_,x)=>x<12?`午前${x}時です`:(x,x>12?`午後${x}時です`:'正午です')); 2console.log(times);

投稿2021/06/24 10:43

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問