我正在看问题:
编写一个程序,读取整数序列并按升序显示它们。
我正在创建一个 ArrayList(我是新手),我想用从命令行输入的整数进行填充。对于数组,我可以使用 for 循环
for (int i =0; i < array.length; i++) {
array[i] = scanner.nextInt();
但是对于无限大小的 ArrayList 我不知道如何处理输入?
编辑:
class SortNumbers {
public static void main(String[] args) {
List numbers = new ArrayList();
Scanner scanner = new Scanner(System.in);
System.out.println("Enter some numbers.");
while (scanner.hasNextInt()) {
int i = scanner.nextInt();
numbers.add(i);
}
}
}
使用 ArrayList 的想法是避免确定性的迭代计数。尝试这样的事情:
ArrayList<Integer> mylist = new ArrayList<Integer>();
while (sc.hasNextInt()) {
int i = sc.nextInt();
mylist.add(i);
}
我宁愿迭代扫描仪并添加到列表中:
List<Integer> list = new ArrayList<Integer>();
while(scanner.hasNextInt())
list.add(scanner.nextInt());
}
然后排序。
首先,如果您有
ArrayList
,则不会使用 []
来访问/设置元素。这是针对数组的,与 ArrayList
不同。您可以使用 add
方法,
其次,需要对ArrayList进行排序。查看 API 中的
Collections.sort
。
最后,要迭代列表,有许多可用的构造。最常见的一种是..
List<Integer> numbers = new ArrayList<Number>();
numbers.add(1);
numbers.add(2);
...
for (Integer number : numbers) {
System.out.println(number);
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class sortArrayList {
public static void main(string args[]) {
List<Integer> arrList = new ArrayList<Integer>();
while (scanner.hasNextIint()) {
arrList.add(scanner.nextInt());
}
Collections.sort(arrList);
}
}
这并不难。 由于您使用的是数组列表,因此非常简单!
import java.util.*;
class Arr{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);//initializing scanner class
String cont="";//String to check whether the user wants to input anymore numbers or not
List<Double> n=new ArrayList<Double>();//List that will store our numbers
while(!(cont.equals("no"))){//taking continuous input
System.out.println("Enter number:");
n.add(sc.nextDouble());
System.out.println("Do you want to continue?(type 'yes'/'no')");
cont=sc.next();
}
Collections.sort(n);//sorts your ArrayList
System.out.println("Sorted list:");
for (Double value : n) {//displaying sorted list
System.out.println( value);
}
}
}
您还可以使用 for 循环:
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 5; i++) {
list.add(sc.nextInt());
}
List<Integer> list1 = new ArrayList<>();
try (Scanner sc = new Scanner(System.in)) {
int n=sc.nextInt();
for(int i=0;i<n;i++){
list1.add(sc.nextInt());
}
}
for(int n1:list1){
System.out.print(n1+" ");
}