Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在链表上使用扫描仪_Java_Linked List_Java.util.scanner - Fatal编程技术网

Java 在链表上使用扫描仪

Java 在链表上使用扫描仪,java,linked-list,java.util.scanner,Java,Linked List,Java.util.scanner,我在我的类中有一个任务,就是使用一个链表和一个返回布尔值表示true或false的方法。该方法应该检查列表是否已排序(按时间顺序排序,例如1、2、7、14) 当我运行这个程序时,无论我的列表是否排序,我都不会得到任何答案。我是不是用错扫描仪了,还是怎么了 Kap18包; 导入java.util.*; 导入javax.swing.*; 公共类列表{ 公共静态void main(字符串[]args){ 布尔排序; System.out.println(“写几个数字”); 扫描仪sc=新的扫描仪(Sy

我在我的类中有一个任务,就是使用一个链表和一个返回布尔值表示true或false的方法。该方法应该检查列表是否已排序(按时间顺序排序,例如1、2、7、14)

当我运行这个程序时,无论我的列表是否排序,我都不会得到任何答案。我是不是用错扫描仪了,还是怎么了

Kap18包;
导入java.util.*;
导入javax.swing.*;
公共类列表{
公共静态void main(字符串[]args){
布尔排序;
System.out.println(“写几个数字”);
扫描仪sc=新的扫描仪(System.in);
LinkedList选项卡=新建LinkedList();
while(sc.hasnetint())
tab.add(sc.nextInt());
isSorted(选项卡);
如果(排序=假){
System.out.println(“列表未排序”);
}
else if(sorted=true){
System.out.println(“列表已排序”);
}
}
公共静态布尔值已排序(LinkedList选项卡){
布尔排序=真;
int i=0;
int num1=(整数)tab.get(i);
int num2;

对于(i=1;i这里有几个问题。首先,您忽略了
isSorted
的返回值。其次,您将
赋值为false
,然后将
赋值为true
if
语句中的
排序的
变量,方法是使用
=
操作符,而不是
=/code>。对于布尔型,最简单的方法是无效此类错误是直接检查变量,而不是将其与
true
false
进行比较:

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

您的问题是
sorted=false
false
分配给
sorted
,然后使用
false
进行测试。因此测试总是说列表已排序

您应该使用
=
而不是
=

然而,许多人(包括我自己)认为
variable==true
variable==false
是不好的风格;例如,see。其原因是使用
=
会留下一种可能,即将
=
误打为
=

(在大多数情况下,在布尔表达式中使用
=
!=
也是多余的。但并非所有情况都是如此。)

因此,我认为最好的写作方式是:

    if (!sorted) {
        System.out.println("The list is not sorted");
    }
    else {
        System.out.println("The list is sorted");
    }
或者反过来,这样就不需要对排序后的
变量求反


第二个问题是,
sorted
没有设置在第一位,因为您没有将
isSorted
调用的结果分配给任何对象

通常,在赋值之前使用
sorted
会出现编译错误。但在这种情况下,由于前面的错误,
if
语句正在为
sorted
赋值



最后,在列表为空的情况下,
isSorted
中有一个bug。(请尝试一下,然后查看…)

在主方法的if检查中,您似乎正在将排序设置为等于真/假。
=
设置值,
=
检查相等性。因为排序是布尔值,所以从技术上讲,您也不需要使用
=
如果(排序){/*打印已排序*/}否则{/*打印未排序*/}