• 我的Java之旅——第一个Java程序


    在简单的看了一点Java的基本内容后,我开始尝试写自己的第一个Java程序。由于某些原因,学校官方的教务APP看不了自己这学期的平均绩点,就想着自己动手,写一小段代码,算一下自己的平均绩点。程序的功能很简单,输入自己的各科绩点和对应的学分,输出平均绩点。




    # **代码:**
    ``` /** *Program:GPA Calculator *Version: 1 *CopyRight:jiuweilinghu * Date:16,July,2017 * Function:calculate and print * the GPA(Grade Point Average) */ package hujunqin; import java.util.Scanner;
    public class Grade {
        String studentName;    //学生姓名
        int courNumber;        //本学期课程数
        double[] score=new double[20];     //数组,用以存放各科成绩
        double[] credit=new double[20];    //数组,用以存放各科学分
        
        /*构造方法,初始化学生姓名和学期课程数*/
        public Grade(String name,int num) {
            studentName=name;
            courNumber=num;
        }
        
        /*计算方法*/
        public double toCalculate(int max) {
            int i;
            double temp=0,result=0,totalCredit=0;
            
            for(i=0;i<max;i++) {
                temp+=score[i]*credit[i];
                totalCredit+=credit[i];
            }
            result=temp/totalCredit;
            
            return result;
        }
        
        public static void main(String[] args) {
            int j;
            String strName="";
            int number=0;
            Scanner scan=new Scanner(System.in);
            
            System.out.println("请输入你的名字:");
            if(scan.hasNextLine()) {
                strName=scan.nextLine();
            }
            
            System.out.println("请输入你本学期的课程数:");
            if(scan.hasNextInt()) {
                number=scan.nextInt();
            }
            
            Grade grade=new Grade(strName,number);  //创建类对象
            
            System.out.println("请分别输入你的各科绩点和对应学分:");
            for(j=0;j<number;j++) {
                if(scan.hasNextDouble()) {
                    grade.score[j]=scan.nextDouble();
                }
                if(scan.hasNextDouble()) {
                    grade.credit[j]=scan.nextDouble();
                }
            }
            
            double outPut=grade.toCalculate(number);
            System.out.println(grade.studentName +"同学你本学期"
                    +number+"门课程的平均绩点为:"+outPut);
        }
    }
    
    <br/>
    
    ***
    ***
    <br/>
    # **涉及到的知识点:**
    
    <br/>
    ## 1.  一个Java程序的整体框架
    
    
    * 类:一个java程序可以由若干个类构成,但有且只有一个public类,可以有多个非public类。每一个类写在一个Java文件里,文件名必须与public类名一致。上面的程序功能比较简单,只要一个类就可以完成,类名是Grade,所以文件名就必须是Grade.java,后面必须要记得加上“.java”的后缀。
    
    * 构造方法: 一个类,要有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法,构造方法可以初始化一些变量。上述程序中包含了构造方法`public Grade(String name,int num)`,名字与类名一样,含有两个参数name和num,用以创建对象时初始化变量studentName和CourNumber。   
    
    * 方法:每个类要包含一个主方法`public static void main(String[] args)`,程序都是从主方法开始执行。除了主方法,还可能包含其他的方法,如上面的`toCalculate`方法。方法要通过对象来调用。  
    
    * 对象:要调用方法,就要先创建类对象,在创建一个对象的时候,至少要调用一个构造方法。对象的声明、实例化及初始化格式为`ClassType ObjectName=new MethodName()`,上述`Grade grade=new Grade(strName,number)`创建Grade类的对象grade,并对studentName和CourNumber进行初始化。对象grade用以调用toCalculate方法和数组score[]和credit[]以及类变量studentName和CourNumber。  
    
    <br/>
    ## 2.  数组的声明和创建
    
    
    数组的声明和创建可以用一句语句完成,`ArrayType[] ArraryName=new ArrayType[ArraySize]`,如上述`double[] score=new double[20]`和`double[] credit=new double[20]`。对于数组的声明,也可以沿用C/C++里的方式:
    `ArrayType ArraryName[ArraySize]`。
    <br/>
    ## 3.  Java Scanner类
    
    
    (1)Scanner类可以用以获取用户的输入。使用Scanner类,要在前面加上语句`import java.util.Scanner`。使用时要创建Scanner对象,从而调用类中的方法。上面创建了对象scan:`Scanner scan=new Scanner(System.in)`,参数为`System.in`。
    
    (2)Scanner类常用的方法及作用:
    
    >* next()和nextLine():获取输入的字符串,next()不接受空格,nextLine()接受空格。
    >
    >* nextInt()、nextFloat()、nextDouble():分别获取输入的int、float、double类型的数据。对于其他的数据类型,均有形如nextDataType()的获取方法。
    >
    >* hasNext()、hasNextLine()、hasNextInt():判断是否还有输入的数据,通常在使用对应的获取数据方法前都要进行判断。同样的,上面提到的所有获取数据的方法,都对应一个形如hasNextDataType()的判断方法。如上述程序中,要获取输入的字符串并赋值给变量
    >strName,可以用以下语句完成:
    >
    >```
    >if(scan.hasNextLine()) {
    >    strName=scan.nextLine();
    >}    
    >```
    
    <br/>
    ## 4.  print()、printf()、println()
    
    
    **print():** 输出括号中的内容,不换行,若要换行需要另加换行符“
    ”。若括号内有多个部分,各部分之间用加号(+)连接。如:
    
    

    System.out.print(grade.studentName +"同学你本学期"
    +number+"门课程的平均绩点为:"+outPut+" ");

    
     **printf():** 沿用C/C++的方法,可以对输出进行格式控制。上面语句等价于:
    
    

    System.out.printf("%s同学你本学期%d门课程的平均绩点为:%f ",
    grade.studentName,number,outPut);

    
    若想要控制输出绩点保留两位小数,只需把“%f”改为“%.2f”。即:
    
    
    System.out.printf("%s同学你本学期%d门课程的平均绩点为:%.2f
    ",
    		  grade.studentName,number,outPut);
    
    
    **println():** 与print()一样,只是会自动换行,无需再加换行符。上述语句等价于:
    
    
    System.out.println(grade.studentName +"同学你本学期"
                +number+"门课程的平均绩点为:"+outPut);
    
    <br/>
    
    ***
    ***
    
    <br/>
    **欢迎读者指出表述不当或者阐述错误之处。**
    <br/>
  • 相关阅读:
    linux下修改mysql密码
    会话跟踪技术之——cookie
    servlet之注册登录(简写)
    java服务端和用户端
    JavaBean和jsp的开发模型
    session的用法
    jsp元素
    servlet
    ServletContext对象统计在线人数
    图片站点服务
  • 原文地址:https://www.cnblogs.com/jiuweilinghu/p/7191348.html
Copyright © 2020-2023  润新知