实验二 Java基本语法
一、实验目的与要求
1、掌握Java常用编程工具的使用;
2、掌握Java语言的基本语法,包括:标识符、简单类型、表达式及运算、选择结构、循环结构、数组、输入输出。
二、实验原理
标识符:Java语言使用的是Unicode字符集,使用2个字节表示一个符号,总共可描述65536个不同的符号,基本上可以描述世界上所有国家的文字。因此,除可以使用通常的方式来命名标识符之外,也可以使用中文、日文、朝鲜文作为标识符。但是,对于程序员来说:最好还是使用遵从一般规范。
在Java语言中规定了各基本类型的数据所占的固定字节数。分别如下:byte 1个字节, short 2个字节, cahr 2个字节, int 4个字节, long 8个字节, float 4个字节, double 8个字节。
与C语言不同的是,Java语言中增加了boolean类型,即逻辑类型(布尔类型),其变量只有2个常量值,绝对不能与C中的非0就是真、0就是假混淆。
运算规则、选择结构、循环结构与C语言基本一致,不再赘述了。
数组属于特殊的类,每个数组都是一个对象。对象都是指针。
一维数组的声明、定义、赋值(创建数组),访问(包括使用foreach方式,Java中新增加的遍历方式),数组的元素个数
二维数组:JAVA的二维数组和一维数组的内存是分开分配的。
三、实验内容
[老师给的图,现在回头一看老师用的可能是假的《疯狂JAVA讲义》,3乘以1居然得2,笑死我了,一百多块钱的书校对质量是这样的吗?!哈哈哈哈哈哈哈]
1.使用循环输出九九乘法表,输出如下结果
public class text1 {
public static void main(String[] args) {
for (int i = 1, j = 1; i <= 9; j++) {
System.out.print(j + "*" + i + "=" + j * i + " \t");
if (i == j) {
i++;
j = 0;
System.out.println();
}
}
}
}
2.使用循环输出等腰三角形
public class text2 {
public static void main(String[] args){
int h=4;//层数
for(int i=1;i<=h;i++){
for(int j=1;j<=h-i;j++){
System.out.print(" ");
}
for(int k=1;k<=2*i-1;k++){
System.out.print("*");
}
System.out.println();
}
}
}
3.通过API文档查询Math类的方法,打印近似圆
public class text3 {
public static void main(String[] args){
//调用绘图函数,参数是圆的半径
paint(10);
}
public static void paint(int r){
//假定圆心在坐标(r,r)处
int x = 0;//
int y = 0;//
int c = 0;//中间空格数
int z = 2;//每行递减量,步长设为2是为了调节屏幕纵横比。
for (int i = 0; i <= r*2; i += z){
//获取画*点的坐标的x值
x = getX(r, y);
//先画y值上左边的*
System.out.print(getSpace(x)+"*");
c = (r-x)*2;//以圆心对称输出空格
//再画该y值上右边的*
System.out.println(getSpace(c)+"*");
//每次y值递减
y += z;
}
}
public static int getX(int r, int y){
//取直角三角形长边长
int h = y - r;
//求直角三角形短边长
double l = Math.sqrt((r*r)-(h*h));
//取x值,Math.round()返回最接近的整数
return (int) Math.round(r-l);
}
public static String getSpace(int i){
String s = "";
for(int j = 0; j<i;
j++){
s += " ";
}
return s;
}
}
4.实现一个按字节来截取字符串的子串的方法
public class text4 {
public static void main(String[] args) {
String str1 = "中国abc";
String str2 = str1.substring(1,3);//从第1号位置开始截取字符串,截到3号位,把截取后的返回,赋值给str2
System.out.println("str1:" + str1);
System.out.println("str2:" + str2);
}
}
5.编写一个程序,将浮点数转换成人民币读法字符串
package Day01;
import java.util.*;
public class text5 {
private String[] hanArr = {"零", "壹", "贰", "叁","肆", "伍", "陆", "柒", "捌", "玖"};
private String[] unitArr = {"分","角","元","拾","佰","仟","萬","拾","佰","仟","亿","拾","佰","仟"};
/**
* 把一个浮点数转换成人民币读法字符串
* 本程序最大的读数为千亿
*/
private String toHanStr(double input){
String result = "";
long num = (long) (input * 100);
int b;
int count = -1;//用于记录当前位的上一位是否为0
int len = String.valueOf(num).length();
boolean isWanZero = false;//判断万位数是否为0
if (len > 10)
{ isWanZero = String.valueOf(num).substring(len - 10, len - 6).equals("0000");
}
for (int i = len - 1; i>= 0; i--)
{
b = (int)(num / Math.pow(10.0, i));
if (b != 0)
{
num = (long)(num - b * Math.pow(10.0, i));
if (count == 0)
{
//如果前一位为0,即count == 0,则加零
result += hanArr[0] + hanArr[b] + unitArr[i % len];
} else {
result += hanArr[b] + unitArr[i % len];
}
} else {
//加亿,萬,元
if (i % 4 == 2 && !(i == 6 && isWanZero))
{
result += unitArr[i % len];
}
}
count = b;
}
return result;
}
public static void main(String[] args) {
text5 fr = new text5();
System.out.println("请输入要转化成人民币读法的浮点数:");
Scanner in = new Scanner(System.in);
double money = in.nextDouble();
System.out.println(fr.toHanStr(money));
}
}