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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

227閲覧

unityでのプログラムのif文の質問

amysa

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/01/24 07:02

編集2019/01/24 07:16

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました

発生している問題・エラーメッセージ

double before = 0.0f, after = 800.1f;
double time1 = 0.0f, time2 = 0.0f;
int flag1 = 0, flag2 = 0, cnt = 0;

if (700 < frames[0].GetAnalogValue(3)) { before = frames[0].GetAnalogValue(3); //UnityEngine.Debug.Log(frames[0].GetAnalogValue(3)); cnt = 1; //UnityEngine.Debug.Log(before); //UnityEngine.Debug.Log(timer); if (before < after && cnt == 1 && flag1 == 0) { time1 = timer; cnt += 1; flag1 = 1; //一度だけ取るため //UnityEngine.Debug.Log("time1=" + time1); //flag2 = 0; //2セット目の時間をとるため // UnityEngine.Debug.Log("1回目の最大値時間を代入"); } else if (before < after && cnt == 2 && flag2 == 0) { time2 = timer; cnt += 2; flag2 = 1; //一度だけ取るため //UnityEngine.Debug.Log("time2=" + time2); //flag1 = 0; //1セット終了 //UnityEngine.Debug.Log("2回目の最大値時間を代入"); GetHeartrate = 60 / time2 - time1; UnityEngine.Debug.Log(GetHeartrate); } if (cnt==3) { before = 0.0f; after = 800.1f; flag10 = 0; flag20 = 0; cnt = 0; } after = before; //UnityEngine.Debug.Log(after); } //UnityEngine.Debug.Log(frames[0].GetAnalogValue(3)); //rawdata出力 //GetHeartrate = ecg.Heartrate(frames[0].GetAnalogValue(3));  //心拍数の計算 //UnityEngine.Debug.Log(GetHeartrate);  //心拍数出力

frames[0].GetAnalogValue(3)
これは機材からとってきた値です。

if (before < after && cnt == 1 && flag1 == 0)
の中に入ると
cnt += 1;
flag1 = 1; //一度だけ取るため
この2行を入れているのに
else if (before < after && cnt == 2 && flag2 == 0)
に入らず
if (before < after && cnt == 1 && flag1 == 0)
の中から出てくれません。

どうしてこうなってしまうのでしょうか

エラーメッセージ

該当のソースコード

ソースコード

試したこと

違うプログラムのflag1などが悪さをしているのかと思い消しました。
flag10などの違うプログラムでは使っていない変数にしてもダメでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

int flag1 = 0, flag2 = 0, cnt = 0;
この一文を関数内に入れていませんか?
関数内に入れていると、この関数が実行される度に初期化されます。また、実行が終わると値は消滅します。
次呼び出す時に引き継いで使うなら、関数の外に出してください。

投稿2019/01/24 07:16

yuuyu

総合スコア1139

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

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

amysa

2019/01/24 09:20

解決しました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問