- PR -

チェックデジットに関して

投稿者投稿内容
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2003-12-11 17:43
シュウベエさんへ。
まずは質問にきちんと正確に回答をしましょう。

シュウベエさんが実装しなければならないチェックデジットは仕様が決まっているのですか?
もしくは、何の仕様に従うのですか?それはシュウベエさん以外の人にはわからないわけです。
引用:

シュウベエさんの書き込み (2003-12-11 17:13) より:
奇数偶数判定してからの、チェックデジット算出ですよね。


と言われても誰も答えようがないことはわかりますか?
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-12-11 18:00
シュウベエさんこんにちは。
いや、しばらく音沙汰がなかったのでもうあきらめたのかと思っていましたが、まだこの問題に取り組んでおられたんですね〜。いや、その執念には敬服いたします。

ところで、私の答えもばんさんと同様です。

シュウベエさんはどのような方法でチェックディジットを算出しようとしていらっしゃいますか?以前に書き込んでおられた、
http://homepage.mac.com/sunagoh/excel/ex000101.html
に書かれている方法ですか?

また、もしJavaでプログラムを作成されているのなら、それを書き込んで、更にそのプログラムがどのような動作をしているかを付け加えれば、きっと誰かが回答をしてくれると思いますよ。

とにかくいまのままでは誰もシュウベエさんを助けてはくれないと思いますので、ここはひとつもう少し情報公開をされるといいですね(^_^)/

[ メッセージ編集済み 編集者: たーぞう 編集日時 2003-12-11 18:01 ]
シュウベエ
常連さん
会議室デビュー日: 2003/04/16
投稿数: 27
投稿日時: 2003-12-18 17:35
import java.io.*;
import java.io.FileReader;
import java.io.FileWriter;

/*
* Created on 2003/12/18
*/

/**
* @author Administrator
*check
*/
public class check {

public static void main(String[] args, int counter) {
while (counter <= 30000) {
System.out.println("データ読み込み開始");
try{
char data[]=new char[100];

//ファイルオープン
FileReader fr=new FileReader("input.csv");

//ファイルを読み込む
int carscount=fr.read(data);
String str=new String(data,0,charscount);
System.out.println(str);

//ファイルを閉じる
fr.close();

}catch(Exception e){
//例外処理
System.out.println("例外"+e+"発生しました");
}
System.out.println("データ読み込み終了");
}


int[] value = new int[13];
int a = 0;
int b = 0;

for (int i = 0; i < 12; i++) {
value[i] = Integer.parseInt(args[0].substring(i));
}
value[12] = 0;

for (int j = 0; j < 12; j++) {
if (j % 2 == 0) {
b += value[j];
} else {
a += value[j];
}
}
a = a * 3;
value[12] = 10 - (a + b) % 10 % 10;

for (int k = 0; k < 13; k++) {
System.out.print(value[k]);
}
System.out.print("\n");
}

System.out.println("データ書き込み開始");
try{
//ファイルを開く
FileWriter fw=new FileWriter("output.csv");

//ファイルに書き込む
fw.write("data");

//ファイルを閉じる
fw.close();

}catch(Exception e){
//例外処理を行う
System.out.println("例外"+e+"が発生しました");
}
System.out.println("データ書き込み終了");
}
}


-----------------------------------------------------------

上記で、こんな感じの事がやりたいのですが・・・たぶん
おかしい記述も多々あると思います。

おかしい所を指摘していただけると助かります。よろしくお願いします。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2003-12-18 17:47
永井です。
コード実行も細かい検証もまだやってみていないですが……

引用:

上記で、こんな感じの事がやりたいのですが・・・たぶん
おかしい記述も多々あると思います。

おかしい所を指摘していただけると助かります。よろしくお願いします。



「こんな感じの事がやりたい」がおかしいです。

このソースに加えて

・Inputとしてこんなデータを与えて
・こういう出力を得たいのに
・こんな出力になってしまうんです

……くらいは書いていただかないと、見る方の手間がかかり過ぎるのでは?
と言うか、前にも書かれていたと思うんですが、率直に具体的に書かないと
伝わらないような気がします。
少なくとも私は、何がやりたいのかさっぱり分かりませんでした。
#分かろうと努力もしませんでしたが

ソースを書かれたことで、とりあえず一歩前進したとは思います。
ただ、たーぞうさんの書かれている中の「更にそのプログラムがどのような
動作をしているか」がまず欠落しているわけです。
更に、上にも書きましたように「どう動作して欲しいのか」も欲しいです。


[ メッセージ編集済み 編集者: 永井和彦 編集日時 2003-12-18 18:02 ]
シュウベエ
常連さん
会議室デビュー日: 2003/04/16
投稿数: 27
投稿日時: 2003-12-18 17:56
csvデータなんですが

とりあえず、12桁の数字が30000行以上あると考えてください。
そのデータを読み込んで

チェックデジットを算出し、13桁目に追加して
csvデータで書き出します。

こういう流れです。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2003-12-18 18:10
引用:

シュウベエさんの書き込み (2003-12-18 17:56) より:
csvデータなんですが

とりあえず、12桁の数字が30000行以上あると考えてください。
そのデータを読み込んで

チェックデジットを算出し、13桁目に追加して
csvデータで書き出します。

こういう流れです。



で、何がうまくいかないんでしょうか?

10000行だとうまくいくのに30000行だと処理が終了しないんですか?

13桁目にチェックデジットが追加されて欲しいのに何も追加されずに
入力そのままで出力されてしまうんですか?

13桁目に付加されているチェックデジットが想定しているものと違う
のですか?
#この場合は計算式も併せて必要になります

何がしたいのか、何で困っているのか分からないんです……
シュウベエ
常連さん
会議室デビュー日: 2003/04/16
投稿数: 27
投稿日時: 2003-12-19 13:47
実行すると、

java.lang.NoSuchMethodError: main
Exception in thread "main"

こういうエラー表示がでます。

それと、読み込み部分に関して

String str=new String(data,0,charscount);

でcharscountの部分にeclipse上では赤ラインが入ります。
ここから進みません。

エラーの出ない完成した場合の実装コードってどうなるでしょうか?
okutin
ベテラン
会議室デビュー日: 2003/12/11
投稿数: 98
お住まい・勤務地: 広島
投稿日時: 2003-12-19 14:00
こんにちは。

とりあえず「}」の数が合ってないのと下記のように
変数名に誤りがあるところでしょうか。

>int carscount=fr.read(data);
>String str=new String(data,0,charscount);

「carscount」と「charscount」

スキルアップ/キャリアアップ(JOB@IT)