我正在尝试从java中的文本文件中读取一行。我收到java.lang.ArrayIndexOutOfBoundsException: 1
例外。
这是我的代码:
try {
Scanner kb = new Scanner(new FileReader(fileName));
String line = "";
int count = 0;
while (kb.hasNext()) {
line = kb.next();
String[] temp = line.split("#");
System.out.println(temp[1]);
Wedding tempWed = new Wedding(temp[0], temp[1], temp[2], temp[3], Integer.parseInt(temp[4]));
test[count] = tempWed;
count++;
}
} catch (FileNotFoundException ex) {
}
这是文本文件中的行:
Chiquita Sanford#Magee Sosa#2016-11-05#Garden#84
我需要按"#"分开,这部分有效。
当我尝试访问位置1的元素时,Java抛出异常。
我认为这是因为在名字和姓氏之间有一个空格,因为当我System.out.println(temp[0])
显示" Chiquita"而不是" Chiquita Sanford"。
当第一个数组索引中有多个单词时,Java是否对分割有一些限制。
答案 0 :(得分:3)
您必须使用nextLine方法阅读整行。 next将读取直到第一个标记(在您的情况下为“Chiquita”,因为它后跟一个空格字符并被解释为分隔符)。所以改变这一行:
public ActionResult ShowMenuGallery(int id)
{
ViewBag.guid = Guid.NewGuid();
List<string> menuImage = new List<string>();
ReturnImages(((Guid)ViewBag.guid).ToString(), id, ref menuImage);
List<MyClass> data = new List<MyClass>() { new MyClass() { src =menuImage[0] , thumb = menuImage[0] } };
var json = Newtonsoft.Json.JsonConvert.SerializeObject(new
{
operations = data
});
return Json(json);
}
public class MyClass
{
public string src { get; set; }
public string thumb { get; set; }
}
用这个:
line = kb.next();
答案 1 :(得分:2)
您使用kb.next()
将返回下一行而不是下一行,为此kb.nextLine()
kb.hasNext()
类似问题需要kb.hasNextLine()