Scanner 与 BufferReader的选择

今天在测试ant的时候,写了如下代码:

HelloWorld.java//


package com.laolang.hello;


import java.util.Scanner;

import com.laolang.stu.Student;

public class HelloWorld {
	public static void main(String[] args) {
		Scanner input = new Scanner( System.in );
		
		Student stu = null;
		int id = 0;
		String name = null;
		int age = 0;
		String sex = null;
		

		
        System.out.print("输入学号:");
        id = Integer.parseInt( input.nextLine() );
        
        System.out.print("输入姓名:");
        name = input.nextLine();
        
        System.out.print("输入年龄:");
        age = Integer.parseInt( input.nextLine() );
        
        System.out.print("输入性别:");
        sex = input.next();
		
		stu = new Student( id, name, age, sex );
		
		System.out.println("student:");
		System.out.println(stu);
		
		
		
		
		System.out.println("Hello World!");
		System.out.println("小代码!");
		
		input.close();
	}

}

 Student.java//


package com.laolang.stu;

public class Student {

	public Student() {
		super();
	}

	public Student(int stuId, String stuName, int stuAge, String stuSex) {
		super();
		this.stuId = stuId;
		this.stuName = stuName;
		this.stuAge = stuAge;
		this.stuSex = stuSex;
	}

	@Override
	public String toString() {
		return "Student [stuId=" + stuId + ", stuName=" + stuName
				+ ", stuAge=" + stuAge + ", stuSex=" + stuSex
				+ "]";
	}

	public int getStuId() {
		return stuId;
	}

	public void setStuId(int stuId) {
		this.stuId = stuId;
	}

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

	public int getStuAge() {
		return stuAge;
	}

	public void setStuAge(int stuAge) {
		this.stuAge = stuAge;
	}

	public String getStuSex() {
		return stuSex;
	}

	public void setStuSex(String stuSex) {
		this.stuSex = stuSex;
	}

	private int stuId;
	private String stuName;
	private int stuAge;
	private String stuSex;

}

然后运行结果:



run:
     [java] 输入学号:
1001
     [java] 输入姓名:
     [java] 输入年龄:
tian
     [java] Exception in thread "main" java.util.InputMismatchException
     [java] 	at java.util.Scanner.throwFor(Scanner.java:909)
     [java] 	at java.util.Scanner.next(Scanner.java:1530)
     [java] 	at java.util.Scanner.nextInt(Scanner.java:2160)
     [java] 	at java.util.Scanner.nextInt(Scanner.java:2119)
     [java] 	at com.laolang.hello.HelloWorld.main(HelloWorld.java:23)

BUILD FAILED
于是百度之,在CSDN上看到了可以用BufferReader来读取,经过测试,没有问题:


使用BufferReader之后的HelloWorld.java//


package com.laolang.hello;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import com.laolang.stu.Student;

public class HelloWorld {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(
				System.in));
		Student stu = null;
		int id = 0;
		String name = null;
		int age = 0;
		String sex = null;

		try {
			System.out.print("输入学号:");
			id = Integer.parseInt(br.readLine());
			System.out.print("输入姓名:");
			name = br.readLine();
			System.out.print("输入年龄:");
			age = Integer.parseInt(br.readLine());
			System.out.print("输入性别:");
			sex = br.readLine();
		} catch (NumberFormatException | IOException e) {
			e.printStackTrace();
		}

		stu = new Student(id, name, age, sex);

		System.out.println("student:");
		System.out.println(stu);

		System.out.println("Hello World!");
		System.out.println("小代码!");

	}

}

使用ant运行效果:



run:
1001
小代码
23
男
     [java] 输入学号:输入姓名:输入年龄:输入性别:student:
     [java] Student [stuId=1001, stuName=小代码, stuAge=23, stuSex=男]
     [java] Hello World!
     [java] 小代码!

BUILD SUCCESSFUL
Total time: 12 seconds

使用java命令运行效果:



laolang@laolang:~/code/ant/li/stu/classes$ java com.laolang.hello.HelloWorld
输入学号:1001
输入姓名:tianya
输入年龄:23
输入性别:nan
student:
Student [stuId=1001, stuName=tianya, stuAge=23, stuSex=nan]
Hello World!
小代码!


问题:

使用ant运行的时候虽然可以正常输入,但是没有输入,然后使用java命令就没有问题,看来还是应该在ant中执行shell下的 java.com.xx.xx.XX才可以




转载于:https://my.oschina.net/iamhere/blog/347311

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值