質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Q&A

1回答

1274閲覧

CSV形式 Java

ProgramP

総合スコア6

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

0グッド

0クリップ

投稿2017/05/21 21:28

編集2017/05/21 21:40

「任意の数値がカンマ区切されたCSV形式の文字列を引数として入力すると
数値を昇順にソートし直した文字列を返却するサブルーチンを作成。

尚、CSV形式で格納される数値は64ビット整数値で最大65535個とする。
又、数値以外や、非CSV形式等、想定外の文字列、nullが引数として渡された場合は、
nullを返却すること。」
というシステムを現在、AndroidStudioのJavaで作っているのですが、

正常ルートやlongの64ビット整数値以上ではnull、文字列の場合nullはできています。
65536個以上、非CSV形式、nullを入力した場合、処理結果をnullとする方法がわかりません。その際のソースコードを教えていただけないでしょうか?```Java

MainActivity.java

1public class MainActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 String longNum = new String(); 9 10 for (int count = 0; count < 0; count++) { 11 if (count == 0) { 12 longNum = 0 + ""; 13 } else { 14 longNum = longNum + "," + 0; 15 } 16 } 17 String conv = StringConverter.sortCsvFormatString(longNum); 18 } 19} 20``` 21```StringConverter.java 22public class StringConverter { 23 24 // 検索文字の定数作成 25 private static final String SEARCH_WORD = ","; 26 // 配列の定数作成 27 private static final int MAX_COUNT = 65535; 28 29 public static String sortCsvFormatString(String string) { 30 String convertStr = null; 31 32 // long型の配列で65535個 33 34 long tempLong[] = new long[MAX_COUNT]; 35 36 37 // カンマの位置を検索する。 38 // カンマの位置までの文字列を取得する。 39 // long型で配列に格納する。 40 // 検索したところから文字列を削除する。 41 42 int startPos = 0; 43 int count = 0; 44 45// // CSV形式以外の時、null 46// try { 47// tempLong[count] = Long.parseLong(tempString); 48// } catch (java.lang.NumberFormatException e){ 49// return null; 50// } 51 // if ("," がないとき){ 52 // nullで返す 53 //} 54 55// // 65536個以上の時、null 56// try { 57// tempLong[count] = Long.parseLong(tempString); 58// } catch (java.lang.NumberFormatException e){ 59// return null; 60// } 61// if (tempLong.length >= 65536) { 62// return null; 63// } 64 65// // nullの時、null 66// try { 67// tempLong[count] = Long.parseLong(tempString); 68// } catch (java.lang.NumberFormatException e){ 69// return null; 70// } 71 //if ( = null){ 72 // return null; 73 //} 74 75 // くり返し文 検索が終わった場合もしくは65535回回した場合終了 76 for (; count < MAX_COUNT; count++) { 77 int cursorPos = string.indexOf(SEARCH_WORD, startPos); 78 79 if (cursorPos == -1) { 80 String tempString = string.substring(startPos, string.length()); 81 try { 82 tempLong[count] = Long.parseLong(tempString); 83 } catch (java.lang.NumberFormatException e) { 84 return null; 85 } 86 87 tempLong[count] = Long.parseLong(tempString); 88 count++; 89 break; 90 } 91 92 String tempString = string.substring(startPos, cursorPos); 93 startPos = cursorPos + SEARCH_WORD.length(); 94 tempLong[count] = Long.parseLong(tempString); 95 } 96 97 long tempSort[] = new long[count]; 98 for (count = 0; count < tempSort.length; count++) { 99 tempSort[count] = tempLong[count]; 100 } 101 102 // 最後の要素を除いて、すべての要素を並べ替えます 103 for (count = 0; count < tempSort.length - 1; count++) { 104 105 // 下から上に順番に比較します 106 for (int arrayOrder = tempSort.length - 1; arrayOrder > count; arrayOrder--) { 107 108 // 上の方が大きいときは互いに入れ替えます 109 if (tempSort[arrayOrder] < tempSort[arrayOrder - 1]) { 110 long arrayChange = tempSort[arrayOrder]; 111 tempSort[arrayOrder] = tempSort[arrayOrder - 1]; 112 tempSort[arrayOrder - 1] = arrayChange; 113 } 114 } 115 } 116 count = 0; 117 for (; count < tempSort.length; count++) { 118 if (count == 0) { 119 convertStr = String.valueOf(tempSort[count]); 120 } else { 121 convertStr = convertStr + SEARCH_WORD + String.valueOf(tempSort[count]); 122 } 123 } 124 125 if (conv.contains(",")) { 126 } return null; 127 128 return convertStr; 129 } 130} 131```

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

全体的に Java の標準ライブラリの機能を使うべきです。カンマで区切りたいなら、String#split の使用を検討したり、ソートしたいなら、Arrays.sort を使ったり。

投稿2017/05/21 21:57

koko_u

総合スコア936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問