iアプリのstar言語 (Java拡張言語) の質問です。
if文の条件式に『対象の変数の値がint型なら』という式の書き方を教えてください。
色々調べて試しましたが全部だめでした。
他にiアプリのstarに対応した方法があれば教えてください。
【試した事】
『変数 == 比較対象』を使って比較
『変数.equals(比較対象)メソッド』を使って比較
『変数 instanceof 参照型のクラス』を使って比較
『変数.getClass().getName() == 比較対象』を使って、名前として比較
-------------------------
【実験内容と結果】
int num = 1;
という変数があるのを前提としています。
-------------------------
■『変数 == 比較対象』を使って比較
if(num == int)
↓エラーメッセージ↓
'.class' がありません。
if(num == int){
^
-------------------------
■『変数.equals(比較対象)メソッド』を使って比較
if(num.equals(int))
↓エラーメッセージ↓
'.class' がありません。
if(num.equals(int)){
^
-------------------------
■『変数 instanceof 参照型のクラス』を使って比較
if(num instanceof int)
↓エラーメッセージ↓
予期しない型
検出値 : int
期待値 : 参照
if(num instanceof int){
^
予期しない型
検出値 : int
期待値 : クラスまたは配列
if(num instanceof int){
^
-------------------------
■『変数.getClass().getName() == 比較対象』を使って、名前として比較
if(num.getClass().getName() == "int")
↓エラーメッセージ↓
int は間接参照できません。
if(num.getClass().getName() == "int"){
^
-------------------------
検証の結果、『int』はプリミティブ型であり、クラスでは無いので比較対象として成立しない、という事らしいです。
つまり、プリミティブ型の値が代入された変数の型を検出する方法が知りたいのです。
よろしくおねがいします。
No.1ベストアンサー
- 回答日時:
star自体には詳しくないんですが、Javaで考えると
intで宣言した変数には基本的にintしか入りません。
int numと宣言すれば、その有効範囲内なら、numは常にintです。
コンパイルの時点で決まり、実行中は変化しません。
よって、実行時の状況に応じて判定する必要など無いと思うのですが。
判定を必要とするのは、Object型とか、ジェネリクスを使ったときとかしか思い浮びませんが、どちらもプリミティブではないのでinstanceof等を使って判定ができるはずです。
何がしたいのでしょうか?
この回答への補足
ご回答ありがとうございます。
何がしたいかというと、ご指摘の通りですが、Object型を引数にとるメソッドにintを指定して呼び出してから、内部処理で、
『数値なら~』、『nullなら~』、など処理を分岐させたいんです。
エラーにならない書き方を教えてください。
↓具体的には、こんな感じです。↓
public void test(Object obj){
if(objが数値なら){
//処理
}else if(objがnullなら){
//処理
}
}
------------------------------
test(1);
------------------------------
としたいのですが、エラーが2つ。
■Object型の引数にintを指定できないエラー。
test(java.lang.Object) (SceneMainGame 内) を (int) に適用できません
------------------------------
■instanceofの右側に、『int』を指定できないエラー。
予期しない型
検出値 : int
期待値 : クラスまたは配列
------------------------------
すみません自己解決しました。
こうする事にしました。
test( new Integer(50) );
public void test(Object obj){
if(obj instanceof Integer){
Integer num = (Integer)obj;
System.out.println(num.intValue());
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
式の型は配列型で int に解決済...
-
Javaで素数の表を表示させたい...
-
偶数奇数の判定
-
ある年月の月間日数を取得する...
-
Java3Dで円錐台を描く方法を教...
-
コード中の謎のエラー
-
6桁の数字を重複なしでランダム...
-
分を表す数字(int型)を時間形...
-
Javaのファイル名チェックについて
-
コンストラクタ内で別のコンス...
-
javaの課題・・
-
java spring でエラーが出て困...
-
「配列定数は、イニシャライザ...
-
C#で、デリゲートからその関数...
-
行の途中から読み込む方法
-
iアプリでバイナリデータを16進...
-
C#で「型または名前空間名 'int...
-
java初心者の質問(3つの整数の...
-
javaでcsvファイル読込時の改行...
-
javaでカレンダー作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
式の型は配列型で int に解決済...
-
「配列定数は、イニシャライザ...
-
javaでcsvファイル読込時の改行...
-
java spring でエラーが出て困...
-
javaでカレンダー作成
-
Javaで電卓を作りたい
-
SwingでJtableのヘッダ行が表示...
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
C#で実行時にメソッドの返り値...
-
(Swing)JTextFieldを半角のみ入...
-
c# デリゲート関連の命名について
-
Javaでポインタ的なことはでき...
-
複数のボタンを配置し、それぞ...
-
JUnit4のアノテーションについて
-
javaのエラーの意味がわかりま...
-
intが負の時に投げる例外はあり...
-
sin曲線とcos曲線を描くプログ...
-
C++からC#のdllを参照する際、...
-
Java 初心者 int型の取り扱い方
おすすめ情報