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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenGL ES

携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

解決済

IllegalArgumentExceptionの解決法を教えてください。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenGL ES

携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

2回答

0リアクション

0クリップ

40681閲覧

投稿2017/01/21 15:05

###前提・実現したいこと
ダブルタップで別クラスで定義したメソッドを呼んで
画面上に表示した点の認識を行うことができるようにしようとしました。

しかしダブルタップをした瞬間に問題が発生し
「発生している問題・エラーメッセージ」の欄に書いてある

java.lang.IllegalArgumentException: length - offset < n

というエラーが発生していました。

このエラー自体はオラクルのホームページを見ると
「不正な引数、または不適切な引数をメソッドに渡したことを示すためにスローされます。」
という事みたいですが引数の何が不適切なのか
また「length - offset < n」がなにかわからない状態です。

「該当のソースコード」にはエラーメッセージで指摘されている場所が含まれるメソッドを記載しています。

そこでこのエラーを解決するのに必要な手順を教えていただけると幸いです。

よろしくお願いいたします。
###発生している問題・エラーメッセージ

java.lang.IllegalArgumentException: length - offset < n at android.opengl.Matrix.multiplyMV(Native Method) at android.opengl.GLU.gluUnProject(GLU.java:237)

###該当のソースコード
値を渡す側のメソッド

java

@Override public boolean onDoubleTap(MotionEvent motionEvent) { int x = (int) motionEvent.getX(); int y = (int) motionEvent.getY(); float x1 = motionEvent.getX(); float y1 = motionEvent.getY(); float y2 = 1280-y1; Log.d("y2", "y2 ;"+ y2); PPS.PickUpPoint2(gl11,x1,y2); Log.d("onDoubleTap", "x:" + x + ",y:" + y); return false; }

値を渡した側のメソッド

java

public boolean PickUpPoint2(GL11 gl11,float x1, float y2) { int i, j, k; int flagi = 0; int flagj = 0; int flagk = 0; float dis, mindis; PickUpPoint_flag = false; mindis = 5.0f; for (i = 0; i < ncpt[0]; i++) { if (i == 0 || i == ncpt[0] - 1) { flagi = 1; } else { flagi = 0; } for (j = 0; j < ncpt[1]; j++) { if (j == 0 || j == ncpt[1] - 1) { flagj = 1; } else { flagj = 0; } for (k = 0; k < ncpt[2]; k++) { if (k == 0 || k == ncpt[2] - 1) { flagk = 1; } else { flagk = 0; } if (flagi + flagj + flagk > 0) { float CPX = CP[i][j][k][0]; float CPY = CP[i][j][k][1]; float CPZ = CP[i][j][k][2]; gl11.glGetFloatv(GL11.GL_MODELVIEW_MATRIX, model_f, modelOffset); gl11.glGetFloatv(GL11.GL_PROJECTION_MATRIX, project_f, projectOffset); gl11.glGetIntegerv(GL11.GL_VIEWPORT, view, viewOffset); GLU.gluUnProject( x1, y2, 0, model_f, modelOffset, project_f, projectOffset, view, viewOffset, nearobj, nearobjOffset ); dis = (float) sqrt((nearobj[0] - CPX) * (nearobj[0] - CPX) + (nearobj[1] - CPY) * (nearobj[1] - CPY) + (nearobj[2] - CPZ) * (nearobj[2] - CPZ)); if (dis <= mindis) { mindis = dis; i_sel=i; j_sel=j; k_sel=k; PickUpPoint_flag = true; } } } } } return PickUpPoint_flag; }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenGL ES

携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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