我正在尝试使用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; 在将5个字符串添加到arraylist之后,readLine会不断进行文本输入而不会退出。它不会退出for循环。请帮助我了解我在这里所做的错误。
实际上并不会永远持续下去,零的字符代码是48,一个是49,两个是50,依此类推。因此,当您输入5时,计算机将读取它的字符值,并将n2存储为53,让我们输入52个输入。为什么用52代替53?还有第二个错误,br.read()
只看输入的第一个字节,所以是一个字符。第一次br.readLine()
调用时,它会完成读取您键入的第一个数字之后的行内容的操作。要解决这些问题,只需进行更改
int n2 = br.read();
至
int n2 = Integer.parseInt(br.readLine());
和瞧!完毕!PS,您可能希望将其包含Integer.parseInt()
在try catch块中,以防用户输入数字以外的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句