-4

最も簡単な質問かもしれませんが、現時点では、これを実装する方法についてのアイデアは得られていません。

わかりました。問題は、2つの整数を連結する方法です。

たとえば、 2つの異なる整数0000を使用して0000などの整数を作成します。NSStringを使用してみましたが、失敗しました。

私のコードは:

                int num1 = 00;
                int num2 = 00;
                NSString *str = [NSString stringWithFormat:@"%d%d",num1,num2];
                int num = [str intValue];
                NSLog(@"num = %d",num); // It Logs 0 but I want 0000.

誰かがより良いアイデアを持っていますか?

編集 :

そのnumを使用してテキストフィールドのタグを設定したいことに注意してください。そのため、すべてのゼロが不可欠です。だから私の主な問題はここから始まります。

カスタムセルを含むテーブルビューが1つあります。このカスタムセルには、10を超えるテキストフィールドがあります。ここで、編集するすべてのテキストフィールドを一意に識別したいと思います。そのため、そのテキストフィールドのタグは、 rowNumberおよびtextFieldNumber(10のうちのどのtextFieldを意味する)と呼ばれる2つの値によって連結された整数でなければなりません。

だから私の質問は、私がやろうとしていることが正しいかどうかということです。そうでない場合は、私にいくつかの有用な解決策を教えてください。

4

6 に答える 6

3

整数データ型(などint)は整数値のみを格納し、フォーマット情報は格納しません。したがって、先行ゼロの数が失われます(整数値には影響しません。つまり、0、00、および0000は同じ整数:ゼロです)。

フォーマット情報を保持したい場合は、個別に保存する必要があります。簡単な方法は、文字列自体を格納することです。または、常に同じ桁数にしたい場合は、フォーマット文字列を変更します。

int num1 = 0;
int num2 = 0;
NSString *str = [NSString stringWithFormat:@"%02d%02d",num1,num2];

上記のコードの後、にstrなります"0000"。ただし、に変換してからフォーマットを使用しintてログに記録すると、もう一度結果が得られます(0000と0は同じ整数であるため)。%d0

編集:タグ付けの目的で一意の整数を生成するために、行番号(rowNumber)とテキストフィールド番号(textFieldNumber)を指定して、次のような式を使用します。

tagNumber = rowNumber * 100 + textFieldNumber;

このように、行0のテキストフィールドの数値は0..99、行1のテキストフィールドの数値は100..199などになります。行ごとに100を超えるテキストフィールドが必要な場合は、1000などのより大きな数値を掛けるだけです。

整数演算では、これらの値は次の方法で行番号とフィールド番号に戻すことができます。

 rowNumber = tagNumber / 100;
 textFieldNumber = tagNumber % 100;
于 2013-01-09T12:28:07.617 に答える
2

これを使用してみてください:

int num1 = 0;
int num2 = 0;
int num3=0;
int num4=0;
NSString *str = [NSString stringWithFormat:@"%d%d%d%d",num1,num2,num2,num3];
int num = [str intValue];
NSLog(@"num = %0*d",str.length,num);

これがお役に立てば幸いです。

ただし、num1でのみ「0」を初期化するため、この「int num1=00」のように初期化しないでください。

于 2013-01-09T12:25:30.700 に答える
0

なぜそれをintに戻すのですか?フォーマットした文字列を印刷する必要があります。

NSLog(@"num = %@",str);

数値として、0と0000の間に違いはありません。整数は値のみを保持し、フォーマットは保持しません(これが文字列の目的です)。

于 2013-01-09T12:14:25.930 に答える
0

最初の整数に100を掛け、それに2番目の整数を追加します。次を使用して印刷できるはずです。

NSLog([NSString stringWithFormat:@"%04d", sum]);

これは先行ゼロを置きます。

于 2013-01-09T12:24:50.433 に答える
0

あなたはそれを次のように埋めることができます:

注:num1とnum2はどちらも2桁である必要があります。サイズが大きくなると機能しなくなります。

int num1 = 00;
int num2 = 00;
NSString *str = [NSString stringWithFormat:@"%d%d",num1,num2];
int num = [str intValue];
NSLog(@"num = %04d",num);
于 2013-01-09T12:25:17.987 に答える
0

印刷が実際の問題ではない場合は、タグを10000に設定し、それをシーケンス番号に追加して一意のタグ値を取得するには、乗算係数が必要だと思います。

または、文字列としてnumを使用し、num.length回のforループで10を掛けることができます。

于 2013-01-09T12:32:46.030 に答える