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

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

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

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

Q&A

解決済

3回答

498閲覧

偶数に反応するプログラム

siranui

総合スコア54

JavaScript

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

1グッド

2クリップ

投稿2018/10/23 14:01

###したいこと/現状
数字 〇(〇は0~9)と言われ、
その数が2で割って余りがなければ
偶数のフラグを立てて、

「それ、偶数だよ...ね?あってるよね?」

と反応するものを作ろうとしました。

が、現在、どの数字にも無反応となってしまいます。
####エラーコード/プログラムの場所

  • エラーコード

code: 'MODULE_NOT_FOUND'  です。
が、これは他のうまくいくプログラムにも(なぜか)出るものなので、あまりあてにならないかもしれません。

  • プログラム

ここの2548に書いてあります
##問題のプログラム

js

1var 数字 = (0||1||2||3||4||5||6|7||8||9) 2if( ( 数字 % 2 ) == 0 ) { 3 偶数 = true; 4} 5if (message.content.includes('数字') && 偶数) { 6 message.channel.send('それ、偶数だよ...ね?あってるよね?'); 7 偶数 = false; 8 return; 9}

みたいな感じです。
フラグ(偶数)は、もっと上に
let 偶数 = false;
と書かれています。

set0gut1👍を押しています

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

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

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

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

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

siranui

2018/10/23 14:11

なるほど...実は、クイズのフラグとか、計100を余裕で超える変数をこのBOT使っていまして...手遅れなんですw
退会済みユーザー

退会済みユーザー

2018/10/23 14:14

ねたっぽい。なんかすごいです…wwww
siranui

2018/10/23 14:25

ありがとうございますw  こんなんですが、頑張りますw
dice142

2018/10/24 02:27

「var 数字 = (0||1||2||3||4||5||6|7||8||9)」ってこのまま使っているんですか? もしくは「0-9」のどれかが入るって意味で、実際は「var 数字 = 3」のように使ってるんでしょうか?
siranui

2018/10/24 08:21

そうですね。「0~9」のどれかが入るって意味で使ってい...たつもりです。もっといい方法とかってあるんですか?
guest

回答3

0

数字 〇(〇は0~9)と言われ、

その数が2で割って余りがなければ、
偶数のフラグを立てて、

と、コードが合致していません。↑の通り書きましょう。

投稿2018/10/23 14:16

otn

総合スコア84538

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

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

siranui

2018/10/23 14:40 編集

```js var 数字 = (0||1||2||3||4||5||6|7||8||9) if (message.content.includes(数字)) { if ((数字 % 2) == 0 ){ 偶数 = true; if (message.content.includes(数字 + '数字') && 偶数) { message.channel.send('それ、偶数だよ...ね?あってるよね?'); return; } return; } return; 偶数 = false; } ``` こうしてみました。。。が、相変わらず無反応です。なんででしょうか?
otn

2018/10/23 14:55

そのまま書くと、 if(数字 % 2 == 0){ 偶数 = true; message.channel.send('それ、偶数だよ...ね?あってるよね?'); return; } では?
siranui

2018/10/23 15:06

実は、これを書いているところはDiscordというところでして、 (言うのが遅れてすみません><) if (message.content.includes('ナンチャラ')) { は必要みたいなんです。 一応、外してやってみましたが、無反応でした
otn

2018/10/23 15:13

ということは、質問に書いてある「したいこと」は本当にしたいこととは違うと言うことですね。
siranui

2018/10/24 08:25

そうなってしまうかもしれません。すみません、言葉足らずでした
guest

0

まずは何をしたいのか整理しませんか?

1.こんなことしたいのかな という内容をコメントにしてみました。
違うのなら直して下さい。

js

1//下準備 2//"数字"が何かを定義する 3var 数字 = (0 || 1 || 2 || 3 || 4 || 5 || 6 | 7 || 8 || 9) 4 5//”数字”のうち、偶数のものに”偶数”フラグをtrueにする。 6if ((数字 % 2) == 0) { 7 偶数 = true; 8} 9 10//message.contentに”数字”が含まれていて、かつ その数字が偶数だったら 11//'それ、偶数だよ...ね?あってるよね?'とメッセージを返して 12//”偶数”フラグをfalseにして,runCommand()を抜ける 13if (message.content.includes('数字') && 偶数) { 14 message.channel.send('それ、偶数だよ...ね?あってるよね?'); 15 偶数 = false; 16 return; 17}

2.コメントの内容と実際の動きが正しいか調べてみて下さい。
JavaScript - JSのおすすめ教材、本を教えてください。|teratailの”デバッグ方法”を見ると良いです。

おかしい所色々有ります。

3.もっと単純に考えてみませんか?
要はmessage.contentに2か4か…が入ってたら…と考えると凄く簡単になりますよ。
ヒント:正規表現

4.数字2桁以上や複数数値があった時はどうするのか。

蛇足
Discardとかスクレイピング流行ってんですかね?流行る理由に興味が有ります。

投稿2018/10/23 15:46

編集2018/10/24 01:28
oikashinoa

総合スコア2826

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

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

siranui

2018/10/24 11:36

ご回答ありがとうございます! 一つずつお答えしていきますね! ①:まさにその通りです! ②:コンソール系を今まで以上に充実させてみましたが、やはり特にエラーは出ません... ③:調べて回って、/[02468]/というものを見つけました。   これで大丈夫ですかね? ④:なるほど....ない頭で考えてみたのですが、偶数奇数を知るだけですので、最後の数字を取得するだけで大丈夫だったりしませんかね?どうでしょうか
guest

0

ベストアンサー

JavaScript

1var 数字 = (0||1||2||3||4||5||6|7||8||9)

この||の書き方は左から順に確認し、falseに相当するものであれば次の値を評価し、
trueに相当するものであればその値を評価するという書き方になります。
数値でいえば0false扱いとなり、それ以外はtrue扱いになり、
よって、これは毎回1数字という変数に代入されることになります。
これでは理想の表示ができないのは当然になりますね。

「0~9のどれかが入る」という意味が

  • プログラム側で固定で決める
  • プログラム側でランダムに値を決める
  • ユーザの入力によって決める

によってプログラム内での表現が全く異なります。

プログラム側の固定で良いなら

JavaScript

1var 数字 = 3;

のように固定値を入れてあげればいいです。

プログラム側でランダムで決めるならMath.random()を使って
うまいこと0以上9以下の値を出してあげれば良いです。

ユーザの入力が必要であればフォームを用意するなどが必要ですが、
それで受け取った値を使えばやりたいことはできるでしょう。

投稿2018/10/24 08:39

dice142

総合スコア5158

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

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

siranui

2018/10/24 11:04

ご回答ありがとうございます。 1が反応してしまうのは、そういうことだったのですね! とてもすっきりしました ユーザー側の入力によって決めたいので、 ```js if (message.content.includes('数字')) { var num; message.content.split().forEach(function(element) { if(element.match(/[0-9]/) != null) { num = parseInt(element, 10); message.channel.send('(1)成功 数字:' + num + ' 文字:' + element); } //続く ``` のようにしてみましたが、どうも数字と取ってくれないので、困っています。 どのようにすればよいでしょうか?
dice142

2018/10/24 11:13

質問の主題である「偶数の判定」が解決されたのでしたら、一度質問を終えて別な質問を立てた方が良いです。 今の追加の質問は「数字が取得できない」という別質問ですよね?あまりひとつの質問でいろんな要件を聞くのは振り返った時に混乱するだけです。
siranui

2018/10/24 12:20

なるほど、確かにそうですね。 それでは、var 数字 = (0||1||尺愛)を解決してくださったdice142様をベストアンサーとさせていただきたいと思います。 理由としましては、var 数字 = (0||1||尺愛)の謎が解けた今ならば、 偶数を判定するのも容易だからです。 ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問