JSPから下記のクラスファイルを呼び出し、戻り値を返すように作りたいのですがうまくいきません。
1.Math.floor(Math.random()*100)-50
上記で実行しても小数点以下がでてしまいます。
出ないようにするのは無理なのでしょうか?
2.乱数はdouble型以外だめなのでしょうか?
コンパイルするとdouble型なので間接参照できません。というようなエラーが出てしまいます。
これは結果を文字型に変更して戻り値として返したいのですができません。
どうすれば理想どおりにできるようになりますか?
public String getR(){
double rnd = Math.floor(Math.random()*100)-50;
if(rnd.length = 4){
rnd = rnd.substring(0,2) ;
}
else{
rnd = rnd.substring(0,3) ;
}
_R = rmd;
return _R;
}
No.3ベストアンサー
- 回答日時:
#1の補足にで書かれていたコードを、少しいじってみたのですが、
以下のような形で目的通りにはなりませんでしょうか?
(-50~50の整数が、String型に変換されて戻るはずだと思います。)
間接参照できませんというのは、
「if(rnd.length = 4)」で発生したのではないかと思いました。
私はJSPは使わないので、自信はありません。
public String getR(){
String _R;
int max = 50 ;
int min = -50 ;
int rnd = (int)((Math.random() * (max - min + 1)) + min) ;
_R = Integer.toString(rnd);
if(_R.length() == 4){
_R = _R.substring(0,2);
}
return _R;
}
こんにちは。
できました!!
ありがとうございます。
_R に先に代入してそれを使うようにすればいいんですね。
また、それによってランダム変数の(int)が効くようになり小数点以下が出ないようになりました。
これはJSPではなくjavaのクラスファイルなのですがJSPからこれを呼び出したかったのです。
ほんとにありがとうございました。
No.2
- 回答日時:
Math.random()は0~1の間の値を返します。
開発者は自分のほしい範囲にするために定数をかけて
実際のランダム値として使用します。
例:0~100までのランダムだと100をかける。
doubleで帰ってくるのは開発者が求めるランダム値の
範囲がわからないため汎用的にするためdoubleに
なっていると思います。
(小数点以下がいらない場合は切り捨ててしまえば
上位の桁だけでも数が大きければ範囲内での
ランダム値となります)
この回答への補足
ありがとうございます。
私も小数点以下を切り捨てればいいと思い、(int)やMath.floorを使ってもみましたがだめでした。
No.1
- 回答日時:
今、手元にJDKをインストールしたPCがないので試してないですが、
1.
rndがdoubleなので、単にintでキャストしてやれば良いのでは?
2.キャストしたintをIntegerクラスに入れてやって、toString()で良いような。
細かいJavaの文法はイマイチ覚えていないのであやふやですが、多分いけると思います。
(手元にJava API JavaDocを置いておくべきですね。(^^;)
この回答への補足
ありがとうございます。
下記のようにしてやってみましたが、コンパイルの時点でint型は間接参照できませんとなってしまいました。
public String getR(){
int max = 50 ;
int min = -50 ;
int rnd = (int)((Math.random() * (max - min + 1)) + min) ;
if(rnd.length = 4){
rnd = rnd.substring(0,2);
_R = rnd.toString();
}
else{
_R = rnd.substring(0,3);
_R = rnd.toString();
}
_R = "+" + _R ;
return _R;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 乱数の表示 4 2022/10/12 10:43
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Visual Basic(VBA) VBA 変数が思うように機能しません。ご教授願います。 7 2022/08/14 13:50
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# (C言語)めちゃくちゃな値になってしまいます。 5 2022/08/13 11:55
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語のマクローリン展開ローラン展開のコードについて 3 2022/12/15 14:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
べき乗
-
実数からの小数部の取得
-
0dの意味を教えてください
-
JAVAのプログラムで、2乗計算...
-
Javaで何パーセント%かを表示...
-
doubleで入力するには?
-
Javaによる利率計算の実装方法
-
面積や角度を出力するプログラム
-
java のfor文について質問です。
-
分を表す数値(int型)を、小数...
-
double型変数値の整数部分のみ...
-
System.out.printlnの意味がよ...
-
C言語のポインターに関する警告
-
ループ処理の際、最後だけ","を...
-
eclipseに記述したjavaファイル...
-
System.err. printlnとSystem.o...
-
ダブルクォーテーションを含む...
-
[JAVA]try 内の変数を外で!?
-
Java配列でNullPointerExceptio...
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0dの意味を教えてください
-
Javaで何パーセント%かを表示...
-
実数からの小数部の取得
-
べき乗
-
double型変数値の整数部分のみ...
-
JAVAのプログラムで、2乗計算...
-
printfでのエラーがわからない...
-
doubleとintの違い
-
java のfor文について質問です。
-
分を表す数値(int型)を、小数...
-
99.98+0.01の誤差
-
面積や角度を出力するプログラム
-
ダイアログベースの3次Spline...
-
四捨五入をするメソッドを実装...
-
Javaのeval関数処理
-
最大値を求めるプログラム
-
掛け算演算を使わない掛け算
-
少数50桁以上を表示するには
-
javaで1.8x10の308乗÷...
-
double を すべて bigdecimal
おすすめ情報