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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

1459閲覧

kotlinでif文の条件として「==」を使って比較をしたい。

jimuma

総合スコア23

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2019/04/29 08:03

前提・実現したいこと

参考書を元に、加速度センサーアプリを作ろうとソースコードを写経している初心者です。
やりたいこととしては「kotlinでif文の条件として「==」を使って比較をしたい」になります。

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

イメージ説明

該当のソースコード

package com.example.accball import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener import android.hardware.SensorManager import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.SurfaceHolder import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity(), SensorEventListener, SurfaceHolder.Callback { private var surfaceWidth: Int = 0 //サーフェスビューの幅 private var surfaceHeight: Int = 0 //サーフェスビューの高さ private val radius = 50.0f private val coef = 1000.0f private var ballX: Float = 0f private var ballY: Float = 0f private var vx: Float = 0f private var vy: Float = 0f private var time: Long = 0L override fun surfaceChanged(holder: SurfaceHolder?, format: Int, width: Int, heigth: Int) { surfaceWidth = width surfaceHeight = heigth } override fun surfaceDestroyed(holder: SurfaceHolder?) { val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensorManager.unregisterListener(this) } override fun surfaceCreated(holder : SurfaceHolder?) { val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager val accSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) sensorManager.registerListener(this, accSensor, SensorManager.SENSOR_DELAY_GAME) } override fun onAccuracyChanged(sensor :Sensor?,accuracy:Int) { } override fun onSensorChanged(event: SensorEvent?) { if (event == null) return if (time == 0L) time = System.currentTimeMillis() if (event.sensor.type) == Sensor.TYPE_ACCELEROMETER){ val x = -event.values[0] val y = event.values[1] } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val holder = surfaceView.holder holder.addCallback(this) } override fun onResume() { super.onResume() val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager val accSensor = sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER) sensorManager.registerListener( this, accSensor, SensorManager.SENSOR_DELAY_GAME) } override fun onPause() { super.onPause() val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensorManager.unregisterListener(this) } }

試したこと

エラーから恐らく比較するには型が同じである必要があり、今回は「Unit」と「Int」なので
比較が出来ません、と言われているのかと考えています。
ネットで調べたところ「キャスト」という型を変更する方法があるようですが、
今回だとどちらをどちらにキャストすれば良いのか分からず困っています。

また、参考書では該当箇所について特にキャストせずに記載されているので
そもそも本来は今回のエラーは出ないのが正しいのかもしれないとも思っています。

詳しい方、お手数ですがご助言宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

if (event.sensor.type) == Sensor.TYPE_ACCELEROMETER){

カッコの数があってません

投稿2019/04/29 08:15

y_waiwai

総合スコア87749

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

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

jimuma

2019/04/29 08:27

早速の回答有難うございます! 括弧の数があっていなかっただけのようで、一つ消したら上手くいきました! お恥ずかしいミスでしたが自分で見ているだけでは気づかず助かりました! 有難うございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問