12-01 Java Scanner类,Scanner类中的nextLine()产生的换行符问题

摘要:
**InputStreamis=System.in;**classDemo{*publicstaticfinalntx=10;*publicstaticinalStudents=newStudent();*}*inty=Demo.x;*学生=演示;***构造方法:*Scanner*/importjava.util.Scanner;PublicclassScannerDemo{publicstaticvoidmain{//创建对象Scannersc=newScanner;intx=sc.nextInt();System.out.println;}}Scanner类packagecn.itcast_02的hasNextInt(;importjava.util.Scanner;/**基本格式:*publictooleanhasNextXxx():判断它是否是某种类型的元素*publicXxxnextXxx({//创建对象Scannersc=newScanner;//如果{intx=sc.nextInt();System.out.println;}否则{System.out.print;}}获取数据Scanner类packagecn.itcast_03中nextLine()生成的换行符问题;importjava.util.Scanner;/**两个常用的方法:*publicintnextInt():获取int类型的值*publicStringnextLine():获得String类型的值**有问题:*先获取值,然后获取字符串,就会有问题。
分析理解:Scanner sc = new Scanner(System.in);
package cn.itcast_01;

/*
 * Scanner:用于接收键盘录入数据。
 * 
 * 前面的时候:
 *         A:导包
 *         B:创建对象
 *         C:调用方法
 * 
 * 分析理解:Scanner sc = new Scanner(System.in);
 * System类下有一个静态的字段:
 *         public static final InputStream in; 标准的输入流,对应着键盘录入。
 * 
 *         InputStream is = System.in;
 * 
 * class Demo {
 *         public static final int x = 10;
 *         public static final Student s = new Student();
 * }
 * int y = Demo.x;
 * Student s = Demo.s;
 * 
 * 
 * 构造方法:
 *         Scanner(InputStream source)
 */
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        // 创建对象
        Scanner sc = new Scanner(System.in);

        int x = sc.nextInt();
        
        System.out.println("x:" + x);
    }
}

Scanner类的hasNextInt()和nextInt()方法

package cn.itcast_02;

import java.util.Scanner;

/*
 * 基本格式:
 *         public boolean hasNextXxx():判断是否是某种类型的元素
 *         public Xxx nextXxx():获取该元素
 * 
 * 举例:用int类型的方法举例
 *         public boolean hasNextInt()
 *         public int nextInt()
 * 
 * 注意:
 *         InputMismatchException:输入的和你想要的不匹配
 */
public class ScannerDemo {
    public static void main(String[] args) {
        // 创建对象
        Scanner sc = new Scanner(System.in);

        // 获取数据
        if (sc.hasNextInt()) {
            int x = sc.nextInt();
            System.out.println("x:" + x);
        } else {
            System.out.println("你输入的数据有误");
        }
    }
}
Scanner类中的nextLine()产生的换行符问题
package cn.itcast_03;

import java.util.Scanner;

/*
 * 常用的两个方法:
 *         public int nextInt():获取一个int类型的值
 *         public String nextLine():获取一个String类型的值
 * 
 * 出现问题了:
 *         先获取一个数值,在获取一个字符串,会出现问题。
 *         主要原因:就是那个换行符号的问题。
 * 如何解决呢?
 *         A:先获取一个数值后,在创建一个新的键盘录入对象获取字符串。
 *         B:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换为什么。
 */
public class ScannerDemo {
    public static void main(String[] args) {
        // 创建对象
        Scanner sc = new Scanner(System.in);

        // 获取两个int类型的值
        // int a = sc.nextInt();
        // int b = sc.nextInt();
        // System.out.println("a:" + a + ",b:" + b);
        // System.out.println("-------------------");

        // 获取两个String类型的值
        // String s1 = sc.nextLine();
        // String s2 = sc.nextLine();
        // System.out.println("s1:" + s1 + ",s2:" + s2);
        // System.out.println("-------------------");

        // 先获取一个字符串,在获取一个int值
        // String s1 = sc.nextLine();
        // int b = sc.nextInt();
        // System.out.println("s1:" + s1 + ",b:" + b);
        // System.out.println("-------------------");

        // 先获取一个int值,在获取一个字符串,这里会出问题
        // int a = sc.nextInt();
        // String s2 = sc.nextLine();
        // System.out.println("a:" + a + ",s2:" + s2);
        // System.out.println("-------------------");

        int a = sc.nextInt();
        Scanner sc2 = new Scanner(System.in);
        String s = sc2.nextLine();
        System.out.println("a:" + a + ",s:" + s);
    }
}

免责声明:文章转载自《12-01 Java Scanner类,Scanner类中的nextLine()产生的换行符问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【原创】【滑块验证码】智能指针的实现(指针运算符重载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

c#判断输入textbox是否为数字

asp.net判断输入文字是否是数字 方案一:/**//// <summary> /// 名称:IsNumberic /// 功能:判断输入的是否是数字 /// 参数:string oText:源文本 /// 返回值: bool true:是 false:否 /// </summary> public bool IsNumberi...

C# 模拟键盘操作SendKey(),SendKeys()

模拟键盘输入就是使用以下2个语法实现的. SendKeys.Send(string keys); //模拟汉字(文本)输入SendKeys.SendWait(string keys);//模拟按键输入先了解一下2个语法的用法吧! 稍后贴出代码看看大家能不能看懂哦/... (1)每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为...

C#中处理鼠标和键盘的事件

一 C#中处理鼠标相关的事件:  鼠标相关的事件大致有六种,分别是 :   "MouseHover"、"MouseLeave"、"MouseEnter"、"MouseMove"、"MouseDown"和"MouseUp"。 (1).如何在C#程序中定义这些事件:  在C#中是通过不同的Delegate来描述上述事件,其中描述"MouseHover"、"...

WPF学习笔记-行为

样式和资源字典能在一定范围上设置界面的属性效果,但是这些都是相对的是静态的,即使是动态的,也是先定义好的,无法直接按人的操作行为去设置效果。 这里来实现拖动功能,需要引用System.Windows.Interactivity.dll程序集 一,创建行为 1 using System; 2 using System.Collections.Gener...

UNIX环境编程学习笔记(22)——进程管理之system 函数执行命令行字符串

lienhua342014-10-15 ISO C 定义了 system 函数,用于在程序中执行一个命令字符串。其声明如下, #include <stdlib.h> int system(const char *cmdstring); system 函数在其实现中调用了 fork、exec 和 waitpid 函数。system 函数调用...

在Visual Studio中使用MonoTouch开发iOS应用程序(下):开发体验 狼人:

对于熟悉.NET程序员来说,编写iOS应用程序的最佳选择自然是MonoTouch。在上一篇文章里,我们已经在Mac OS X上安装了MonoTouch开发环境,并已经能够在Mac OS X和Windows之间共享文件。现在我们就可以来简单体验一下,如何使用Visual Studio,Interface Builder以及少量的MonoDevelop来开发一...