第四周课程总结&实验报告(二)

Java实验报告(二)

实验二 Java简单类与对象

一、 实验目的

(1) 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;

(2) 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;

(3) 理解static修饰付对类、类成员变量及类方法的影响。

二、 实验内容

  1. 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:

(1) 使用构造函数完成各属性的初始赋值

(2) 使用get…()和set…()的形式完成属性的访问及修改

(3) 提供计算面积的getArea()方法和计算周长的getLength()方法

  1. 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。

三、实验过程(请自己调整格式)

1. 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
实验源码:
package work;

class Rectangle1 {
        private double width, height;
        private String color;                                              //声明变量属性
        
        public Rectangle1(double width, double height, String color) {     //定义构造方法为属性初始化并赋值
            this.setWidth(width);
            this.setHeight(height);
            this.setColor(color);
        }                                                      
        
         public void result() {                                           //取得信息的方法
            System.out.println("面积:"+getArea()+",周长:"+getLength()+",颜色:"+getColor());
         }
         public double getWidth(){                                       //取得宽度
             return width;
         }
         public void setWidth(double width) {                           //设置宽度
             this.width = width;
         }
         public double getHeight() {                                   //取得高度
             return height;
         }
         public void setHeight(double height) {                       //设置高度
             this.height = height;
         }
         public String getColor() {                                         //取得颜色
             return color;
         }
         public void setColor(String color) {                       //设置颜色
             this.color = color;
         }
         public double getArea() {                                 //计算面积
             return this.width*this.height;
         }
         public double getLength() {                              //计算周长
             return (this.width+this.height)*2;
         }
}
        public class Rectangle{                                       
            public static void main(String args[]) {
                Rectangle1 sum = new Rectangle1(15.00,16.00,"black");       //调用构造方法,传递参数 
                sum.result();                                      //传出信息
            }
        }
实验中遇到的问题:

1.在新建类时直接设置了public static void main(String args[]) ,并在其中使用了this,出现了错误,依靠提示将其修改。
1581166-20190922014423767-732272772.png

2这是我在本题中花费时间最长的问题,进行了各种修改才发现是我在输出时没有将color输出。
1581166-20190922014706267-1792880113.png
1581166-20190922015047158-2140155583.png

3.在不断修改第二题的过程中我突然发现了两种返回getArea()方法和getLength()方法结果的办法
1581166-20190922015326156-1596309120.png
1581166-20190922015332712-364321821.png

实验结果:

1581166-20190922014317081-2029871880.png

2. 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
package work;

import java.util.Scanner;
class Bank {
    private String tag, name, time;
    private int password;
    private double balance;
    
     public Bank(String tag, String name, String time, int password, double balance) {
            this.setTag(tag);
            this.setName(name);
            this.setTime(time);
            this.setPassword(password);
            this.setBalance(balance);
        }
     public String getTag() {
         return tag;
     }
     public void setTag(String tag) {
         this.tag = tag;
     }
     
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     
     public String getTime() {
         return time;
     }
     public void setTime(String time) {
         this.time = time;
     }
     
     public int getPassword() {
         return password;
     }
     public void setPassword(int password) {
         this.password =  password;
     }
     
     public double getBalance() {
         return balance;
     }
     public void setBalance(double balance) {
         this.balance = balance;
     }
     
     Scanner s = new Scanner(System.in);
     public void SaveOrTake() {
         int num = s.nextInt();
         if(num<=0&&balance<=0)
             System.out.println("余额不足");
         else
             balance += num;
     }
     
     public void ChangePW() {
         int p = s.nextInt();
         if(p != 123456)
             System.out.println("密码错误");
         else
             System.out.println("请输入新密码");
             int n = s.nextInt();
             password = n; 
     }
     
}
public class Account{
    public static void main(String[] args) {
         Bank str;
            str=new Bank("123456789eq","LI","20190922",123456,666.01);
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        switch(a){
        case 1:
            str.SaveOrTake();
            break;
        case 2:
            str.ChangePW();
            break;
        case 3:
            System.out.println("123456789eq");
            break;
        case 4:
            System.out.println("20190922");
            break;
        }
    }
}

实验中遇到的问题:

1.第一个遇到的问题就是不知道怎么随机给账户生成一个唯一标识。看了学委的博客发现他是用了base64编码,百度了一下base64编码,了解了这是个什么东西,但是我目前还是不会使用。
2.开户日期应该连接网络同步上传,这里我也还不太懂该怎么弄,但是在搜索的过程中发现了别人的代码,这部分还有待实验。


import java.util.Calendar;
import java.util.Date;
public class gaintime {
/**
* @param args
*/
   public static void main(String[] args) {
     Date today = new Date();
     System.out.println("当前时间是" + today.toString());
     Calendar now = Calendar.getInstance();
     int day = now.get(Calendar.DATE);
     int time = now.get(Calendar.HOUR_OF_DAY);
     System.out.println(time);

四、 总结

1.第一题很简单,但是在做之前发现不记得上课讲了什么,再翻书复习的构造函数
2.第二题还有很多遗留问题,希望能在之后的学习过程中得到解答

第四周课程总结

1.实例化String对象:

①直接赋值:String name = "li";
②通过new方法:String name =new String ("li");

2.String类中几种内容比较方式

①“==”
②重点:使用equals()
 String str = "hello";
                      String str1="world";  
                    if(str.equals(str1)) 
                      {  
                       System.out.println("相等"); 
                      }  
                      else
                      {
                       System.out.println("不相等");  
                      }
      运行结果:
          不相等

2.String类的常用方法

1581166-20190922050436400-1104435822.png
1581166-20190922050708105-1097961238.png

17.18可用来查找指定字符串
19用来比较字符串内容

转载于:https://www.cnblogs.com/LILI6/p/11559832.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android天气预报实验报告模板 public class SetCityActivity extends Activity { //定义的一个自动定位的列表 private ListView gpsView; //定义的一个省份可伸缩性的列表 private ExpandableListView provinceList; //定义的用于过滤的文本输入框 private TextView filterText; //定义的一个记录城市码的SharedPreferences文件名 public static final String CITY_CODE_FILE=&quot;city_code&quot;; //城市的编码 private String[][] cityCodes; //省份 private String[] groups; //对应的城市 private String[][] childs; //自定义的伸缩列表适配器 private MyListAdapter adapter; //记录应用程序widget的ID private int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.set_city); gpsView = (ListView)findViewById(R.id.gps_view); provinceList= (ExpandableListView)findViewById(R.id.provinceList); //设置自动定位的适配器 gpsView.setAdapter(new GPSListAdapter(SetCityActivity.this)); //==============================GPS================================= //当单击自动定位时 gpsView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { TextView localeCity = (TextView)view.findViewById(R.id.locateCityText); localeCity.setText(&quot;正在定位...&quot;); final LocateHandler handler = new LocateHandler(localeCity); //添加一个线程来处理定位 new Thread(){ public void run() { Map&lt;Integer, String&gt; cityMap= getLocationCityInfo(); //记录匹配的城市的索引 int provinceIndex = -1; int cityIndex = -1; //传给处理类的数据封装对象 Bundle bundle = new Bundle(); if(cityMap!=null) { //得到图家名 String country = cityMap.get(LocationXMLParser.COUNTRYNAME); //只匹配中国地区的天气 if(country!=null&amp;&amp;country.equals(&quot;中国&quot;)){ //得到省 String province = cityMap.get(LocationXMLParser.ADMINISTRATIVEAREANAME); //得到市 String city = cityMap.get(LocationXMLParser.LOCALITYNAME); //得到区县 String towns = cityMap.get(LocationXMLParser.DEPENDENTLOCALITYNAME); Log.i(&quot;GPS&quot;, &quot;============&quot;+province+&quot;.&quot;+city+&quot;.&quot;+towns+&quot;==============&quot;); //将GPS定位的城市与提供能查天气的城市进行匹配 StringBuilder matchCity = new StringBuilder(city); matchCity.append(&quot;.&quot;); matchCity.append(towns); //找到省份 for(int i=0; i&lt;groups.length; i++) { if(groups[i].equals(province)) { provinceIndex = i; break; } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值