scanner 订阅
扫描器是一类自动检测本地或远程主机安全弱点的程序,它能够快速的准确的发现扫描目标存在的漏洞并提供给使用者扫描结果。工作原理是扫描器向目标计算机发送数据包,然后根据对方反馈的信息来判断对方的操作系统类型、开发端口、提供的服务等敏感信息。 展开全文
扫描器是一类自动检测本地或远程主机安全弱点的程序,它能够快速的准确的发现扫描目标存在的漏洞并提供给使用者扫描结果。工作原理是扫描器向目标计算机发送数据包,然后根据对方反馈的信息来判断对方的操作系统类型、开发端口、提供的服务等敏感信息。
信息
中文名
扫描器
外文名
scanner
分    类
系统漏洞扫描器
含    义
一类自动检测本地或远程的程序
用    途
能准确的发现扫描目标存在的漏洞
扫描器系统漏洞扫描
RetinaRetina是eEye公司(www.eeye.com)的产品,强大的网络漏洞检测技术可以有效的检测并修复各种安全隐患和漏洞,并且生成详细的安全检测报告,兼容各种主流操作系统、防火墙、路由器等各种网络设备。曾在国外的安全评估软件的评测中名列第一。Retina的主界面共分为三个部分,上部是菜单和工具栏,下部的左边是动态导航菜单,右边是与左边菜单相对应的内容显示窗口。
收起全文
精华内容
参与话题
问答
  • Scanner

    千次阅读 多人点赞 2019-07-08 14:24:38
    //Scanner类中的方法 //优点一: 可以获取键盘输入的字符串 //优点二: 有现成的获取int,float等类型数据,非常强大,也非常方便; public static void ScannerTest(){ Scanner sc = new Scanner(System.in); ...

    遇到的问题:

    public class Test {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            
            String[] arr = new String[n];
            for (int i = 0; i < n; i++) {
                arr[i] =  sc.nextLine();
            }
    
            System.out.println(Arrays.toString(arr));
        }
    }
    

    先看这段代码,看上去很自然,n表示我们字符串数组的长度,for循环用于每个元素的输入,一般的同学们都会这样很自然地写。
    我们运行后,在控制台如此输入:
    3
    a
    b
    c
    你会发现,在输到b并按下回车时,还没等你输入c,控制台就输出结果了:
    [, a, b]
    这是为什么呢?
    从表面来看输出结果,猜想应该是数组的第0个元素被系统写入了一个空字符或者转义字符之类的。
    为了验证这个猜想我们在原来的程序中加一行代码:

    public class Test {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            
            String[] arr = new String[n];
            for (int i = 0; i < n; i++) {
                arr[i] =  sc.nextLine();
            }
            System.out.println(arr[0]); // 输出首个元素看看
            System.out.println(Arrays.toString(arr));
        }
    }
    

    输入不变,输出为:

    [, a, b]

    我们可以看出,第一行有换行符,说明那个arr[0]其实就是\n。
    验证完了最后我们再去看看官方文档:
    nextInt(): it only reads the int value, nextInt() places the cursor in
    the same line after reading the input.(此方法只读取整型数值,并且在读取输入后把光标留在本行)

    next(): read the input only till the space. It can’t read two words
    separated by space. Also, next() places the cursor in the same line
    after reading the input.(读取输入直到遇见空格。此方法不能读取被空格分隔开的内容,并且在读取输入后把光标留在本行)

    nextLine(): reads input including space between the words (that is,
    it reads till the end of line \n). Once the input is read, nextLine()
    positions the cursor in the next line.(读取包括空格在内的输入,而且还会读取行尾的换行字符\n,读取完成后光标被放在下一行)

    如此一来,我们就非常清晰了,也就是说这个nextLine()方法如其名,会读取当前这一整行包括换行符。
    每一次读取过程是从光标位置开始的。所以,一开始那个程序当我们输入3并按下回车,由于nextInt()方法只读取数值而不会读取换行符,所以光标停在了3和\n之间,然后for循环中的第一次nextLine()方法把3后面的换行符\n读取掉了,并把光标弹到下一行,这个时候才开始读取你输入的a字符。最后,才造成了arr[0]的内容其实是一个换行符。
    所以我们为了正确地完成最初的输入,程序应该这样写:

    public class Test {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            sc.nextLine(); // 读掉数值后面的换行符
            String[] arr = new String[n];
            for (int i = 0; i < n; i++) {
                arr[i] =  sc.nextLine();
            }
            
            System.out.println(Arrays.toString(arr));
        }
    }
    

    总结:
    1.next()方法(next()、nextInt()、nextFloat()等等,除nextLine()外)一定要读取到有效字符之后才可以结束输入,有效字符之前遇到的空格、Tab键或Enter键等结束符会自动将其去掉,有效字符之后遇到的Enter键才将其视为结束符,所以next()方法不能得到带空格的字符串。结束读取后,光标不移动到下一行!!!
    2.nextLine()方法,返回的是Enter键之前的所有字符,可以得到带空格的字符串。结束一行读取后,光标移到下一行!!!

    展开全文
  • scanner

    千次阅读 2013-08-03 18:34:31
    一:scanner 输入数据类,而且能够完成数据验证。 二:范例 范例1:从键盘接收 package haizhu.com.scanner; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; ...

    一:scanner

    输入数据类,而且能够完成数据验证。


    二:范例

    范例1:从键盘接收

    package haizhu.com.scanner;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    
    public class ScannerDemo01 {
    	public static void main(String[] args) throws Exception{
    		while(true){
    			Scanner scan = new Scanner(System.in);		// 从键盘接收数据
    			System.out.println("请输入数据:");
    			if(scan.hasNextInt()){
    				int i = scan.nextInt();
    				System.out.println("输入的整数为:"+i);
    			}else if(scan.hasNextFloat()){
    				float f = scan.nextFloat();
    				System.out.println("输入的小数为:"+f);
    			}else if(scan.hasNext("^\\d{4}-\\d{2}--\\d{2}$")){
    				String str = scan.next();
    				Date d = new SimpleDateFormat("yyyy-MM-dd").parse(str);
    				System.out.println("输入的时间是:"+d);
    			}
    		}
    	}
    }
    范例2:从文件读取

    package haizhu.com.scanner;
    
    import java.io.File;
    import java.util.Scanner;
    
    public class ScannerDemo01 {
    	public static void main(String[] args) throws Exception{
    		File f = new File("d:"+File.separator+"text.txt");
    		Scanner scan = new Scanner(f);
    		StringBuffer str = new StringBuffer();
    		while(scan.hasNext()){
    			str.append(scan.next()).append("\n");
    		}
    		System.out.println(str);
    	}
    }




    展开全文
  • Java中Scanner用法总结

    万次阅读 多人点赞 2017-04-03 15:19:52
    最近在做OJ类问题的时候,经常由于Scanner的使用造成一些细节问题导致程序不通过(最惨的就是网易笔试,由于sc死循环了也没发现,导致AC代码也不能通过。。。),因此对Scanner进行了一些总结整理。Scanner类简介...

    最近在做OJ类问题的时候,经常由于Scanner的使用造成一些细节问题导致程序不通过(最惨的就是网易笔试,由于sc死循环了也没发现,导致AC代码也不能通过。。。),因此对Scanner进行了一些总结整理。(我的github:https://github.com/MonkeyJJC?tab=repositories)

    Scanner类简介

    Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间的某种结合。由于任何数据都必须通过同一模式的捕获组检索或通过使用一个索引来检索文本的各个部分。于是可以结合使用正则表达式和从输入流中检索特定类型数据项的方法。这样,除了能使用正则表达式之外,Scanner类还可以任意地对字符串和基本类型(如int和double)的数据进行分析。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。

    关于nextInt()、next()和nextLine()的理解

    nextInt(): it only reads the int value, nextInt() places the cursor(光标) in the same line after reading the input.(nextInt()只读取数值,剩下"\n"还没有读取,并将cursor放在本行中)

    next(): read the input only till the space. It can’t read two words separated by space. Also, next() places the cursor in the same line after reading the input.(next()只读空格之前的数据,并且cursor指向本行)
    next() 方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。

    nextLine(): reads input including space between the words (that is, it reads till the end of line \n). Once the input is read, nextLine() positions the cursor in the next line.
    nextLine()时,则可以扫描到一行内容并作为一个字符串而被获取到。

    public class NextTest{  
        public static void main(String[] args) {  
            String s1,s2;  
            Scanner sc=new Scanner(System.in);  
            System.out.print("请输入第一个字符串:");  
            s1=sc.nextLine();  
            System.out.print("请输入第二个字符串:");  
            s2=sc.next();  
            System.out.println("输入的字符串是:"+s1+" "+s2);  
        }  
    }  
    

    结果:

    请输入第一个字符串:home
    请输入第二个字符串:work
    输入的字符串是:home work
    

    把上面的程序修改一下:

    s1=sc.next();  
    s2=sc.nextLine();  
    

    运行结果:

    请输入第一个字符串:home
    请输入第二个字符串:输入的字符串是:home
    
    

    可以看到,nextLine()自动读取了被next()去掉的Enter作为他的结束符,所以没办法给s2从键盘输入值。经过验证,我发现其他的next的方法,如double nextDouble() , float nextFloat() , int nextInt() 等与nextLine()连用时都存在这个问题,解决的办法是:在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter结束符过滤掉

    public class NextTest{  
        public static void main(String[] args) {  
            String s1,s2;  
            Scanner sc=new Scanner(System.in);  
            System.out.print("请输入第一个字符串:");  
            s1=sc.next();  
            sc.nextLine();
            System.out.print("请输入第二个字符串:");  
            s2=sc.nextLine();  
            System.out.println("输入的字符串是:"+s1+" "+s2);  
        }  
    }  
    

    运行结果:

    请输入第一个字符串:home
    请输入第二个字符串:work
    输入的字符串是:home work
    

    循环输入多组测试用例

    一个while就是一个测试用例

        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
    
            // 一个while就是一个测试用例
            while(in.hasNext()){
                int n = in.nextInt(); // 该测试用例后续接收的参数个数
                long[] array = new long[n];
                String[] arrayStr = new String[n];
                for(int i=0; i<n; i++){
                    arrayStr[i] = in.next();
                }
                for(int i=0; i<n; i++){
                    array[i] = in.nextLong();// 取下一个元素转换成long类型
                }
    
                System.out.println(Arrays.toString(array)+" "+ Arrays.toString(arrayStr));
            }
        }
    

    一个与容器结合的综合例子:

    import java.util.Scanner;    
    public class Main {    
        public static void main(String[] args) {    
            Scanner in = new Scanner(System.in);    
            while (in.hasNext()) {    
                int n = in.nextInt();   
            /* nextLine()是扫描器执行当前行,并返回跳过的输入信息,特别需要注意!!! 
     
                如果没有该行,则执行第一个in.nextLine()命令时的返回值是int n = in.nextInt()的值*/   
                in.nextLine();  
            HashSet<String> set = new HashSet<String>();  
            for (int i = 0; i < n; i++) {   
            String line =   
      
            in.nextLine();   
            String[] arr = line.split(" ");   
            for (int j = 0; j < arr.length; j++) {   
                set.add(arr[j]);   
            }  
             }  
            System.out.println("sum:" + set.size());    
        
        }    
    }  
    

    输入:
    3
    a b c
    d e f
    a b c
    输出:
    6

    展开全文
  • java Scanner

    千次阅读 多人点赞 2019-03-25 17:30:43
    java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。 类的初始化: Scanner object=new Scanner(System.in); 下面简略介绍下Scanner类的方法: next():获取用户的输入,必须要获取到...

    java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
    类的初始化:

    Scanner object=new Scanner(System.in);
    

    下面简略介绍下Scanner类的方法:
    next():获取用户的输入,必须要获取到有效字符才会结束,以空白为结束符
    nextLine():获取用户输入,可以获取空,以回车作为结束符
    nextInt():获取整数
    nextFloat:获取小数

    还有对应上面的hasNext…()方法,针对各自输入的验证,如下面的简单例子:

    Scanner in =new Scanner(System.in);
    /*判断输入是否为整数*/
    if(in.hasNextInt()){
    	Int a=in.nextInt();
    }else{
    	System.out.println("输入不是整数!");
    	}
    
    展开全文
  • Java中要想输入时便要用到Scanner 首先在使用之前导入util包 要想通过控制台进行输入,首先要构造一个Scanner对象,它附属于"标准输入流 Scanner in = new Scanner(System.in); 现在我们就可以使用Scanner类的各种方法...
  • 键盘录入Scanner方法

    2019-05-26 13:40:17
    API--键盘的录入Scanner---2019/5/26Scanner方法 Scanner方法 package com.zhao.day01; import java.util.Scanner; public class Demo04_Scanner { public static void main(String[] args) { Scanner sc = new....
  • Java Scanner用法详解

    万次阅读 多人点赞 2017-02-08 21:47:10
    Scanner用法及Scanner报错:java.util.NoSuchElementException。
  • Scanner scanner=new Scanner(System.in)

    千次阅读 2014-09-14 17:32:00
    import java.util.Scanner;public class inputoutar{ public static void main(String[] args) throws NumberFormatException{ Scanner scanner=new Scanner(System.in); int inputInteger; int inputInt...
  • Scanner用法 目录 1、输入整数、字符串数组 2、输入二维数组 3、输入字符串 4、输入字符串分割为数组 5、连续输入数字和字符串 6、换行输入数字和字符串 7、换行输入数字和字符串(需要包含空格) 1、输入...
  • 这个问题在方法内部也存在,比如定义了一个方法,方法里面定义了Scanner对象x(Scanner x = new Scanner()),之后正常输入和关闭(x.nextInt()... x.close())。然后自定义的这个方法执行完毕,跳回main方法,在main...
  • at java.base/java.util.Scanner.throwFor(Scanner.java:937) at java.base/java.util.Scanner.next(Scanner.java:1594) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util...
  • Java Scanner类的常用方法及用法(很详细)

    万次阅读 多人点赞 2018-08-24 21:16:23
    Java Scanner类的方法及用法(很详细) Scanner类简介 Java 5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。它是以前的StringTokenizer和Matcher类之间的某种结合。由于任何数据都必须通过...
  • java 中的Scanner

    万次阅读 多人点赞 2016-07-21 10:56:52
    java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎么地。一、扫描控制台输入这个例子...
  • import java.util.Scanner; public class MyDate{ public static void main(String[] args){ int sum=0; Scanner mas = new Scanner(System.in); System.out.print("请输入学生人数:"+"\t"); int students=...
  • Scanner keyboard = new Scanner(System.in); System.out.print("Enter the filename to read from: "); String filename = keyboard.nextLine(); System.out.print(filename); File file = new ...
  • import java.util.Scanner //为指定的成绩计分,分数大于等于60为止, //输出加分前和加分后的成绩,统计加次数 //Scanner导入,创建对象,接收并保存 public class demon { public static void main(String[] ...
  • Scanner name=new Scanner(System.in); xuesheng.setname(name.next()); System.out.println("请输入学生的年龄"); Scanner age=new Scanner(System.in); xuesheng.setage(age.nextInt()); List....
  • Scanner input=new Scanner(System.in); double a=0,b=0,c=0,x1=0,x2=0; System.out.print("请输入a,b,c"); a=input.nextDouble(); b=input.nextDouble(); c=input.nextDouble(); x1=(-b+Math.sqrt(b*b-4*a*c...
  • Scanner_00 m=new Scanner_00("1231\n123\n1.23\nccasda\n12333.353\n"); } } 报错为 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) ...
  • 我的程序输入是有很多行 以最后一行0结束输入 每行有两个string 和一个int ``` while(true){ String s = scanner.next();...当读完倒数第二行 scanner.nextLine()后没法读scanner.next() 应该怎么写?
  • Scanner console = new Scanner(System.in); System.out.print(prompt); //int year=getYourAge(console); System.out.println("Your age is "+getYourAge(console)); } public static int getYourAge...
  • Scanner使用详解

    千次阅读 2011-02-07 16:53:00
    Scanner使用方式详解

空空如也

1 2 3 4 5 ... 20
收藏数 72,791
精华内容 29,116
关键字:

scanner