
No.4ベストアンサー
- 回答日時:
もう既に登録してあるのであれば、
ランダムに数字を取得する関数と、
数字が取得してあるか確認する関数を用意して、
両方の関数を必ず通るようにしてから登録という流れでいいのでは?
ランダム数値取得関数()
数字取得してあるか関数(取得したランダム数値)
の流れで、数字が登録済みチェック関数の戻り値をbooleanなどにして、
booleanの結果で上記をループし続けるでいけると思いますが。
例を挙げるとしたら、
boolean loopFlg = true;
int randNum;
while( loopFlg) {
randNum = randomNumberCreate();
loopFlg = checkNumberRegistered(randNum); ←登録されてなかったらfalseを返す
}
こんなんでいけると思いますよ。
関数の実装はご自分で・・・
分かりやすいご説明ありがとうございます。
なるほど、BOOLEANを使うというのは思いつきませんでした。
というより、この関数の使い方が良く分かっていなかったのですが。
ありがとうございました。
(備考)
下記のようにも組んでみても上手くいきました。
int newNo = 0;
newNo = (int)(Math.random() * 999999 + 100000);
StringBuffer bufSql = new StringBuffer();
bufSql.append("SELECT");
bufSql.append(" fid "); //お客様ID取得
bufSql.append("FROM tbl_customer ");
ResultSet rs1=statement.executeQuery(bufSql.toString());
while( rs1.next())
{
int Fid = rs1.getInt("fid");
if (Fid == newNo)
{
newNo = (int)(Math.random() * 999999 + 100000);
}
}
No.5
- 回答日時:
では、少しちがったアプローチを
下準備
(1)100000~999999を配列に順番に用意
(2) (1)の配列をシャッフル
(3) (2)をファイルに書き出す
使用方法
新しい登録要求があったら↑(3)のファイルの先頭6文字を取り出す。ファイルはその分削ったものにする(終りからの方が削りやすいか?)
課題
同時にファイルにアクセスしないようにする
ファイルが外ら見えないように隠す
SQLなら、↑(3)を未使用ID用データベースにして、先頭レコードからIDを取り出して削除、でもいいかも
No.3
- 回答日時:
補足回答を読み、失礼ながら苦笑してしまいました。
すでに、取得した乱数を保存しているじゃないですかー!
ようは、テーブルに保存しているときに、主キーが重複していたら、キー(乱数)を取得しなおせばいいんですよ。
この回答への補足
補足回答ありがとうございます。
お恥ずかしい話で申しわけありません。
まだ勉強始めたばかり(4ヶ月程度)なので、どうも思いつきません。
その本題の主キーが重複していた時に乱数を取得し直す方法をWhile文とIF文等を使ってやってみようとしているのですが、どうやったらいいもんでしょうか?
初歩的な質問で申しわけありません。宜しくお願いします。
No.2
- 回答日時:
配列にすでに出てきた数字を残して チェックすれば よいのでは ないでしょうか?
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
new Main() .start();
}
private void start() {
int newNo = 0;
for(int i =0;i<100;i++){
newNo = (int)(Math.random() * 999999 + 100000);
if(chkNum(newNo)){
System.out.println(newNo);//処理
}
}
}
ArrayList<Integer> chk = new ArrayList<Integer>();
boolean chkNum(int num){
for(int i = 0;i<chk.size();i++){
if(chk.get(i).intValue()==num)return false;
}
chk.add(num);
return true;
}
}
この回答への補足
早々のご返事ありがとうございます。
なるほど。出てきた数値を記憶させておくという手もありますね。
ただ説明不足だったので申しわけありません。
今作成しているのは貸付金管理システム(アコムのHPのようなもの)で、お客様が新規登録でランダムの6桁の数値をIDとしてMYSQLに登録。次回以降のお客様が同じ数値をランダムで取得しないようなプログラムにしたいと思っております。
そこを防ぐ為にIF文やWhile文も考えたのですが、どうしても思いつきません。ご教授頂けたら幸いです。宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel2019 列と列(2列)の数値の重複を調べたい 1 2023/05/11 13:35
- Excel(エクセル) Excel 条件付き書式について 1 2022/12/14 20:38
- Excel(エクセル) ExcelVBAでリストの項目に必要数と同じ手配数を分配していくマクロを作りたいです。 1 2022/07/29 18:36
- Excel(エクセル) Excelの関数詳しい方お願いします。 13 2023/01/18 21:11
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- 数学 複素関数にロピタルの定理を使おうとしている回答者は、複素関数論はおろか微積分学もよく分かっていない、 5 2022/12/28 18:02
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Excel(エクセル) エクセルで列の行の重複の検索方法を教えてください。 8 2022/10/11 14:51
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaのパッケージについての質...
-
classを使って座標軸を求めるコ...
-
C#で実行時にメソッドの返り値...
-
String変数から数字以外を排除する
-
「配列定数は、イニシャライザ...
-
二分探索木で例えば1〜10の値を...
-
ArrayListなかへのArrayListオ...
-
行の途中から読み込む方法
-
マインスイーパーもどきをつく...
-
コード中の謎のエラー
-
javaでcsvファイル読込時の改行...
-
アンマネージDLLで、ダイアログ...
-
C#で「型または名前空間名 'int...
-
JSPやサーブレットでSystem.out...
-
InputStreamはreadが1回しかで...
-
イメージボタンを作成したいの...
-
【Java】再帰的なプログラムで...
-
C#で、あるクラスのメンバーす...
-
System.err. printlnとSystem.o...
-
stderrとstdout
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
メインが含まれていません
-
式の型は配列型で int に解決済...
-
Java 初心者 int型の取り扱い方
-
(Swing)JTextFieldを半角のみ入...
-
DataSet(DataTable)の使い方
-
javaでカレンダー作成
-
intが負の時に投げる例外はあり...
-
C#で実行時にメソッドの返り値...
-
JUnit4のアノテーションについて
-
6桁の数字を重複なしでランダム...
-
JAVA エラー 式の開始が不正で...
-
java spring でエラーが出て困...
-
C#でバブルソート
-
プログラムの作り方
-
全組み合わせの出力
-
SwingでJtableのヘッダ行が表示...
-
アンマネージDLLで、ダイアログ...
-
c# デリゲート関連の命名について
-
複数のボタンを配置し、それぞ...
おすすめ情報