本帖最后由 黄丽慧 于 2012-7-5 11:36 编辑
楼主,我把你的代码复制到eclipse里面编译运行发现,只能输出一行“请输入名字”,然后就挂了。仔细看了代码之后发现, Tourist 类里面没有带参数的构造方法,而是创建对象后再调用对象的成员变量进行赋值。我个人感觉,使用构造函数来进行成员变量的初始化应该会比较好,这样主函数里面直接调用就行了,看起来会比较直观。
然后我自己编写了一个代码来实现楼主的功能,代码中是通过IO流读取键盘输入数据,主要是使用了BufferedReader 的readLine() 来实现数据的读取,最后面是代码的运行结果,楼主可以试一下看看。
package com.lianxi;
import java.io.*;
class Tourist {
String name;
int age;
public Tourist(String n,int a)
{
name=n;
age=a;
}
@SuppressWarnings("finally")
public static String in()//主函数中会从控制台接收两次数据,因此我在tourist类中写了这个静态方法,可以通过类名直接调用
{
String str=null;
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//创建一个bufferreader对象,其读取的是从控制台接收的数据
str = br.readLine();
}
catch(IOException e)
{
System.err.println("Error:"+e);
}
finally
{
return str;
}
}
public void ticket() {
if (this.age > 15) {
System.out.println(this.name + "的年龄为" + this.age + ",门票价格为:20");
} else
System.out.println(this.name + "的年龄为" + this.age + ",门票价格为:免费");
}
}
public class lianxi19 {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("请输入姓名:");
String str1=Tourist.in();
System.out.println("请输入年龄:");
int t=Integer.parseInt(Tourist.in());
Tourist tour=new Tourist(str1,t);//创建一个tourist对象把获取的数据传入进行判断
tour.ticket();
}
}
上面代码中,我使用了bufferreader从控制台接受数据,运行的结果是
|