如何将用户输入的整数发送到Java中的链接列表?

时间:2015-03-24 19:22:12

标签: java list int

我正在尝试编写代码以让用户输入正整数并将它们发送到链接列表。用户输入应在输入负数后结束。此外,我在写一个isSorted布尔方法时遇到问题,如果链表按递增顺序排序则返回true,否则返回false。

这是我到目前为止唯一的代码

import java.util.*;
public class List {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Please type positive integers one by one separated by a space.");
    System.out.println("When you are done, please type a negative integer.");
    int num = input.nextInt();

    }


    public boolean isSorted(){


        if(){ 
        return true;
        }
        else{
        return false;
        }
    }
} 

4 个答案:

答案 0 :(得分:2)

public void input() {
    System.out.println("Please type positive integers one by one separated by a space.");
    System.out.println("When you are done, please type a negative integer.");

    LinkedList<Integer> ll = new LinkedList<>();

    //System.in.available()

    Scanner input = new Scanner(System.in);

    int num;
    while ( input.hasNextInt() ) {
        int i = input.nextInt();
        if (i >= 0) {
            ll.add(i);
        }
    }

    System.out.println(ll+" <-- ll"); //TODO remove debugging code

    System.out.println(isSortedAccending(ll)+" <-- isSortedAccending(ll)");//TODO
}

这可以通过在发现无序的情况下返回false来实现。

public static boolean isSortedAccending(List<Integer> list){
    if (list.size() < 2) {
        return true;
    }

    Integer previous = list.get(0);
    for (Integer next : list) {
        if (previous > next) {
            return false;
        }
    }
    return true;
}

输出:

Please type positive integers one by one separated by a space.
When you are done, please type a negative integer.
1
2
3
-1
[1, 2, 3] <-- ll
true <-- isSortedAccending(ll)
除了使用isSortedDecending()之外,

<看起来完全相同。

答案 1 :(得分:0)

import java.util.LinkedList;
import java.util.Scanner;


public class NumberListing {

   public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       System.out.println("Please type positive integers one by one    separated by a space.");
       System.out.println("When you are done, please type a negative integer.");
       int num = input.nextInt();   
       LinkedList<Integer> list = new LinkedList<Integer>();
       while(num > 0){

           list.add(num);
           num = input.nextInt();
       }

       if(isSorted(list)){
           System.out.println("The list is sorted");
      } else{
           System.out.println("The list is not sorted");
       }
   }


       public static boolean isSorted(LinkedList<Integer> list){
           boolean done = false;
           boolean sorted = true;
           for(int i = 1; i < list.size() && !done  ; i++){
                if(list.get(i) < list.get(i-1)){
                    done = true;
                   sorted = false;
               }
           }
           return sorted;
       }
  }

应该相当简单。当您摄入的数字大于0时,将该数字存储在列表中并从控制台获取下一个数字。

之后,循环遍历从索引1开始的列表,检查每个当前数字是否大于前一个数字。我添加了一个提前退出,因此循环可以随时退出一个小于前一个数字的数字。这意味着它是无序的,我们不关心其余的。

但是,如果您正在尝试创建自己的链接列表,以创建更多代码,我建议您查看教科书或类似的东西来提供帮助。

答案 2 :(得分:0)

您可以使用包装类Integer for int将您的int放入容器(LinkedList)中。普通int是标准基本类型,不能由容器使用,因为容器只能使用类的对象。

LinkedList<Integer> list = new LinkedList();

对于isSorted方法,您可以遍历列表并检查当前值是否高于或等于先前的值。

int prevValue = 0;

for(int i = 0; i < list.size(); i++){
    if(!list.get(i) >= prevValue){
        return false;
    }
    prevValue = list.get(i);
}
return true;

答案 3 :(得分:0)

您需要将下一行作为String读取,拆分该行,然后遍历该行的元素列表,将正元素添加到LinkedList中。确保存放扫描仪。您需要使用nextLine,而不是nextInt

import java.util.*;
public class List {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Please type positive integers one by one separated by a space.");
    System.out.println("When you are done, please type a negative integer.");
    String line = input.nextLine();
    String[] integers = line.split(" ");

    LinkedList ll = new LinkedList<Integer>();
    for (int i = 0; i < integers.length; i++)
    {
        if (Integer.parseInt(integers[i]) > 0)
            ll.add(integers[i]);
    }

    System.out.println(isSorted(ll));
    input.close();
 }

然后,只需使用LinkedList的简单比较函数来检查它是否已排序:

public static <T extends Comparable<T>> boolean isSorted(LinkedList<T> iterable)
    {
        Iterator<T> iter = iterable.iterator();

        if (!iter.hasNext()) {
                return true;
            }
         T t = iter.next();
            while (iter.hasNext()) {
                T t2 = iter.next();
                if (t.compareTo(t2) > 0) {
                    return false;
                }
                t = t2;
            }
            return true;
    }