我正在尝试接受输入并使用BufferedReader将它们添加到arraylist中。 代码正在进行无限输入,并且它没有进一步向更多行(不退出for循环)。 请找到我的以下代码:
public class ALinput {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n2 = br.read();// number of items in the list
ArrayList<String> list2 = new ArrayList<String>();
for(int i =1;i<=n2;++i)
{
list2.add(br.readLine());
}
System.out.println(list2);//printing list before sorting
Collections.sort(list2);//sorting the list
System.out.println("After sorting "+list2);
}
}
我已将n2作为数组列表中的元素数量。 如果输入n2 = 5; readLine在向arraylist添加5个字符串后不断退出时继续进行文本输入。 它不会出现在for循环中。请帮我理解我在这里做的错误。
答案 0 :(得分:0)
实际上它不会永远存在,零的字符代码是48,一个是49,两个是50,依此类推。因此,当您输入5时,计算机会读取它的字符值,并将n2存储为53,然后让您键入52个输入。为什么52而不是53?
还有第二个错误,br.read()
只查看输入的第一个字节,因此只有一个字符。第一次调用br.readLine()
时,它会在您键入的第一个数字后读取该行上的内容。要解决这些问题,只需更改
int n2 = br.read();
到
int n2 = Integer.parseInt(br.readLine());
瞧,瞧!完成了!
附:你可能想在try catch块中包围Integer.parseInt()
,以防用户输入除数字之外的东西。