我的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():** 输出括号中的内容,不换行,若要换行需要另加换行符“\n”。若括号内有多个部分,各部分之间用加号(+)连接。如:
System.out.print(grade.studentName +"同学你本学期"
+number+"门课程的平均绩点为:"+outPut+"\n");
**printf():** 沿用C/C++的方法,可以对输出进行格式控制。上面语句等价于:
System.out.printf("%s同学你本学期%d门课程的平均绩点为:%f\n",
grade.studentName,number,outPut);
若想要控制输出绩点保留两位小数,只需把“%f”改为“%.2f”。即:
System.out.printf("%s同学你本学期%d门课程的平均绩点为:%.2f\n",
grade.studentName,number,outPut);
**println():** 与print()一样,只是会自动换行,无需再加换行符。上述语句等价于:
System.out.println(grade.studentName +"同学你本学期"
+number+"门课程的平均绩点为:"+outPut);
<br/>
***
***
<br/>
**欢迎读者指出表述不当或者阐述错误之处。**
<br/>
我的Java之旅——第一个Java程序的更多相关文章
- Java-Runoob-高级教程-实例-环境设置实例:1.Java 实例 – 如何编译一个Java 文件?
ylbtech-Java-Runoob-高级教程-实例-环境设置实例:1.Java 实例 – 如何编译一个Java 文件? 1.返回顶部 1. Java 实例 - 如何编译 Java 文件 Java ...
- Java Learning 001 新建一个Java工程 HelloWorld程序
Java Learning 001 新建一个Java工程 HelloWorld程序 Step 1 . 在Eclipse 软件里,点击: File -> New -> Java Projec ...
- Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...
- Java之Property-统获取一个应用程序运行的次数
package FileDemo; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre ...
- 【Java】Java_03第一个Java程序
第一个JAVA程序的编写和运行 1.使用记事本编辑 public class Welcome{ public static void main(String[] agrs){ System.out.p ...
- Java语言入门-第一个HelloWorld程序
1.官网下载Jdk 这里给出官网下载网址:https://www.oracle.com/technetwork/java/javase/downloads . 1.1 打开之后出现如下界面: 1.2选 ...
- JAVA学习之第一个HelloWorld程序
第一个HelloWorld程序 第一步,创建java类型的文件 第二步,在创建文件的目录中打开cmd窗口 第三步,使用javac 命令将java文件编译为.class类型的字节码文件 第四步,使用ja ...
- 自学java难吗?一个JAVA学习者应该具备的素质
无论是在校的学生也好,还是转行的也好,如今学JAVA开发的人越来越多,造成了如今新手越来越多,有人说前端饱和了,JAVA饱和了,JAVA才刚开始以一种好的势头发展就饱和了.我也是无语,一般说饱和的人, ...
- java idea 创建第一个java 程序
我们在 src 目录下边创建一个 package. 然后在package下创建我们的程序 helloworld.java 代码: package com.api.com; public class ...
随机推荐
- const 指针
使用指针时要涉及两个目标,即指针本身和指针所指的对象.关于const指针变量,可归结为以下三种: 1.指向常量的指针变量: 2.常指针变量: 3.指向常量的常指针变量. 一.指向常量的指针变量:声明格 ...
- python学习之类和实例的属性;装饰器@property
无论是类还是实例,一切皆是对象. Python是强动态语言,和java在这点上有所不同. class Ab(): a = 666 # 定义类对象Ab,自带属性a,值为666 # 使用Ab.__dict ...
- 添加Access-Control-Allow-Origin主机头, 授权资源跨站访问
时间 2014-09-24 22:02:48 All by Neil 原文 https://blog.byneil.com/添加access-control-allow-origin主机头-授权资 ...
- 安装 wordpress 出现 抱歉,我不能写入wp-config.php文件
本文告诉大家如何安装 wordpress ,在安装过程出现 抱歉,我不能写入wp-config.php文件如何解决 下载 wordpress China 简体中文 - WordPress 安装 在安装 ...
- MyBatis --- 配置步骤
本文并非具体的细节,而是主要的配置步骤 概述 MyBatis 是半自动的ORM 框架,在MyBatis 整合 Spring Boot 的时候步骤比较繁琐,所以写下此篇纪录一下步骤. 使用 MyBati ...
- [javaSE] 网络编程(TCP,UDP,Socket特点)
UDP特点: 面向无连接,把数据打包发过去,收不收得到我不管 数据大小有限制,一次不能超过64k,可以分成多个包 这是个不可靠的协议 速度很快 视频直播,凌波客户端,feiQ都是UDP协议 TCP特点 ...
- [javaSE] 位运算符(&|^)
位运算是直接对二进制进行计算 左移 << 右移 >> 先把整数换成四个8bit 0000-0000 0000-0000 0000-0000 0000-0000 这个二进制左右移 ...
- 浅谈常用的设计模式(new)
简单工厂模式 抽象工厂模式 代理模式 装饰者模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰着模式比生成子类更加灵活. 建造者模式:builder构建
- DNS必知必会
什么是DNS? DNS服务器(Domain Name Server,域名服务器)是进行域名和与之相对应的IP地址进行转换的服务器. 基本概念 DNS服务器中保存了一张域名和与之相对应的IP地址 的表, ...
- [微信小程序]微信开发工具出现 1not found 编译 .wxss文件信息错误怎么办?
错误代码: "1not found 编译 .wxss文件信息错误",如 下图 出现场景: 1.一般出现在安装新版本之后出现的状况,可能由于版本之间的兼容导致 解决办法: 1.重装整 ...