• ベストアンサー

ArrayIndexOutOfBoundsExceptionの対処法

jspで下記のようにStringの文字列をsplitによって Stringの配列に格納しています。 文字列strは"文字,文字" か "文字," か ",文字" という感じで格納されています。 String str; String[] str.split(","); そしてjspでString[0]とString[1]を必ず表示するようになってます。 そうすると文字列"文字,"の場合はString[1]は存在しないため 例外がでて怒られてしまいます。 文字列は入力値のため、どの文字列のパターンが来るか分からない ためどうすればいいのか分からず困っています。 いい方法があればあれば教えていただければと思います。

  • 09er
  • お礼率16% (1/6)
  • Java
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#49428
noname#49428
回答No.2

String[] str.split(",", 2); これではダメですか?

09er
質問者

お礼

すいません。 解決しました。 splitの使い方について理解しておりませんでした。 初心者なものでAPI見てもあまり理解していないことが しばしばありまして… もっと勉強しなおします。

その他の回答 (1)

回答No.1

import java.util.*; public class Q3214322A{ public static void main(String[] args){ if (args.length == 0){ } else{ String[] hoge = args[0].split(","); ArrayList<String> hoge1 = new ArrayList<String>(Arrays.asList(hoge)); if (hoge1.size() < 2){ while(hoge1.size() < 2){ hoge1.add(" "); } } for (int i = 0;i < 2; i++){ System.out.println(hoge1.get(i)); } } } } うーん何か不満。きっと楽な方法があるんだろうな・・・

関連するQ&A

  • C# 文字列の分割

    VS2005を使用しているものです。 複数のURL(入力)を格納したString型の配列があるのですが、 この配列から各要素(URL)の最後尾にあるファイル名だけを 取り出して別のString型の配列に入れたいのですが Splitなどを駆使すればよいのでしょうか? 例 C:\○○○\▲▲▲\××.拡張子 (元の配列の要素の一例)   などから××.拡張子の文字列だけを取り出して   別の配列に格納する感じです。 splitを使う際は\などを区切りに考えています。 for文の中でsplitを駆使しようと考えたのですが、分割した文字列を別で配列に格納して、その最後尾の要素だけ取り出したいのですが、URLの長さは入力によってまちまちなのでどのようにして取り出せばよいか困っています。 勉強不足で恐れ入りますが、何かご教授願えれば幸いです。

  • 文字列比較

    最長10文字の文字列を2件入力し、char型の配列にそれぞれ格納する。2つの文字列を比較し、文字列が同じだったら「equal」を表示し異なっていたら「Not equal」を表示するプログラムを作成せよという課題が出ました。 条件として、11文字以上の文字が入力されたら、先頭から10文字までを有効とし、11文字目以降を無視する。下記のプログラムで文字列1に11文字以上入力すると、うまく動きません。なぜ、うまくいかないかと、どうなおしたらよいかを教えてください。 #include<stdio.h> #include<string.h> #define max_length 10 void get_string (char *p_str, int size); int main() { char string1[max_length+2]; char string2[max_length+2]; printf("文字列1:"); get_string(string1,max_length+2); printf("文字列2:"); get_string(string2,max_length+2); if(!strncmp(string1,string2,max_length)) puts("equal"); else puts("Not equal"); } void get_string (char *p_str, int size) { fgets(p_str,size,stdin); }

  • javaプログラミングでのかぶった文字列の除去

    javaを勉強していて、考えると頭がこんがらがってしまったので 質問します。アドバイスお願いします。 今、例えば 配列にstr[0]に"本"、str[1]に"部品"、str[2]に"本"、str[3]に"部品"、str[4]に"交換" という文字列が格納されているとして、 新しく作った配列str2に配列strでかぶっている文字列を取り除いて 格納するにはどのようにすればよいのでしょうか? str2[0]に"本"、str2[1]に"部品"、str2[2]に"交換"という風に格納したいです。 使えるメソッドなどありましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • C# Splitと配列の複合方法

    こんにちは、 ”てすと、です。¥四月、寒い。” のような文字列があり これを¥で区切り、さらにカンマで区切って(Splitでここはできたのですが) 結果を下記のように配列に格納したいと思うのですが、どのように記述すればよいでしょうか? 配列(0,0)=”てすと” 配列(0,1)=”です。” 配列(1,0)=”四月” 配列(1,1)=”寒い。” 文字列の内容が定まっていないため配列の要素数が変動してするものでして。

  • エクセル2003 string型のデーターの所定文字数の数の取得

    いつもアドバイス頂きありがとうございます。 今回、質問させていただきたいのは、 string型でデーターを取得した文字列に対して ある文字の文字数がいくつ在るかを取得したいのですが VBA関数で、そのような関数はあるのでしょうか? 例  myDataにstring型の文字列を取得してあります。 その中に「,」(カンマ)が何個存在するかと言う事 を取得したい。 やりたい事として、mydata()の中に2次元配列要素となるデーターを 1次元で仮格納してあり、それをセルに書き出すために2次元 に格納(splitで再格納)しなおしているのですが、データーが変わる たびに、カンマの数を数えて配列宣言を記入するのが面倒なので、 カンマの数がいくつでも、2次元に再格納できるようにしたいためで す。 宜しくお願いいたします。

  • JSPを用いて、サーバに配列のデータを送信し、サーバから返された文字列

    JSPを用いて、サーバに配列のデータを送信し、サーバから返された文字列を表示させるようなページを作りたいと思っています。 APサーバで処理させた文字列を表示させたいのです。 データの作成までは以下のような感じで配列のデータを作ることまではわかるのですが、 それをAPサーバを介してJSPに表示させる方法がよくわかりません。。 for (int i=0; i < 10000; i++) { String str= "test" + i ; ArrayList list = new ArrayList(); list.add(str); } JSP入門ページを見ていても、テキストボックスやチェックボックスに入力された値をボタンを押したときに サーバに送信する、といった内容ばかりで…。 イメージとしては以下を考えているのですが、、、どう書いたら良いのか…。 A:上記の配列データを作成して、サーバに送信   (javascriptの関数などを利用してサーバ送信することはできるのか?どうやって渡すの?) B:Aから送られてきた配列データをHTMLの<table>などを利用して表示 サンプルのコードなど簡単でも良いので教えていただけると助かります。 抽象的な質問ですみません。

    • ベストアンサー
    • Java
  • 文字列の切り取り

    任意の文字列String型からある条件を満たした一部分のみ切り出したい .jspの拡張子がついたファイル名のみ取り出す ディレクトリが書いてある場合と、コメントが書いてある場合の2パターン存在する 例外としてファイル名のみ記載されている部分がある(当然ここは問題なし。) 条件 .jspは文字列のどこにあるかは不明 一つの文字列に.jspは複数存在しない ファイル名は統一されていない(パターンなど統一性はない) ファイル名の前は・,/,",日本語がついている場合がある .jspの後は;,);,日本語がついている場合がある これをクリアして xxxxxx.jspを抽出したいのですが、 どんなやりかたがあるのでしょうか? 抽象的ですいませんが宜しくお願いします。

  • マージ型文字列のデリミタ2文字以上のSplit関数のようなものは実現できますか?

    素人で間違っているかもしれませんが、String::Splitは wchar_tのように1文字だけしか使えないので、\r\nのような2文字以上のデリミタに対応しているperlのsplit関数みたいのを探しています。 以下のソースで※ここですの部分で、2文字以上の任意のデリミタでマージ型文字列を配列にしたいです。 .NETは覚えたてですが、Vista以降でも廃れることは無いのでしょうか? 覚えて無意味はきついので・・・ /* VC++2005でperlのようなsplit関数を実現したい 区切り文字は\r\n */ using namespace System; int main( array<String^>^ args ){ String^ str = nullptr; if (1 > args->Length ){ str = "太郎\r\n花子\\純一郎"; } else { str = args[0]; } // strマージ文字列をPerlのsplit関数のようなもので、以下のようなnamesを作成したい。 // $names = split /\r\n/ $str; <=※ここです。 array<String^> ^names = { "太郎", "花子", "純一郎" }; String^ name; for each ( name in names ) { Console::WriteLine("{0}", name); } return 0; }

  • 大きさがわからない配列

    String型の配列で、文字列を格納していきたいのですが、 格納する文字列はいくつ来るかわかりません。 配列を大きさを確保しないで、どんどん文字列を 格納していくことはできますか? ブログのURLを格納するのですが、

    • ベストアンサー
    • Java
  • 誰か教えてください(>ω<)

    •split.c:任意の文字列を,特定の文字列を境に分割し,文字列配列に格納するMySplit()という関数をもつ •join.c:任意の文字列配列を,特定の文字列を境に結合し,一つの文字列にするMyJoin()という関数をもつ •P.c:文字列AAA<>BBB<>CCC<>DDDをdefineし,これに対して,<>を境にsplitして文字列配列の各文字列を表示し,その後でその文字列配列を<>を境にjoinして表示する。 splitかjoinという関数だけでもかまわないのでわかる方がいたらぜひ教えてください。

専門家に質問してみよう