Java小白_面向对象程序设计01顺序结构_07Java 顺序结构之无输入之输出给定图案

学习-Java 顺序结构之无输入之输出给定图案

  • [任务描述]
  • 相关知识
    • [Java 程序基本结构]
    • [关键字]
    • [注释]
    • [输出方法]
    • [控制结构]
    • [字符串常量]
    • [ASCII码]
    • [Unicode 字符集]
  • [编程要求]
  • [测试说明]

1. 任务要求

任务描述

本关任务:输出一个由*组成的实心等腰三角形,如图 1 所示。

图 1

相关知识

为了完成本关任务,你需要掌握:

  1. Java 程序基本结构;
  2. Java 关键字;
  3. 注释的使用;
  4. 显示器输出;
  5. Java 控制结构;
  6. 字符串常量的定义;
  7. ASCII 码和 Unicode 字符集。
Java 程序基本结构

首先我们来看一个完整的 Java 例子:

public class Demo {    
	public static void main(String[] args) {        
		System.out.println("我想学习Java!");    
		}
	}

我们来对这个 Java 程序进行解析:

  • public 是访问修饰符,表示该类是公开的。如果不写 public,也能正确编译,但是这个类将无法从命令行执行,将在后面的实训中详细介绍;
  • class 是关键字,表示这是一个类;
  • Demo 是这个 Java 程序的名称(类名),Java 中对定义类名有一定的要求。要求如下:
    • 类名必须以英文字母开头,后接字母,数字和下划线的组合;
    • Java 程序中良好的命名习惯通常是以大写字母开头来命名类名,如果类名由多个单词组成,每个单词的第一个字母都应该大写。例如:Student、OutputTriangle 等。

注意:1.你创建的 Java 文件的名称必须和类名一致。例如这个例子的代码文件名称为 Demo.java;2.我们在日后的编码中要注意遵守命名习惯。 在类内部,可以定义若干方法(method),如下所示:

public static void main(String[] args) {        
	System.out.println("我想学习Java!");    
	}

上面的代码示例定义了一个方法,该方法命名 main,Java 的执行语句必须放在方法内部,这些语句将会被依次顺序执行;这个方法 main 的返回值类型是 void,表示没有任何返回值。

关键字 static 也是一个修饰符,它表示静态方法,后面我们会讲解方法的类型,目前,我们只需要知道,public static void main(String[] args){}是 Java 的入口程序,在我们目前的基础阶段,所有的代码都需要写在这里。

当然,方法名也有命名规则,和类一样,但是首字母是小写。

在方法内部,语句才是真正的执行代码。Java 的每一行语句必须以分号结束。

public static void main(String[] args) {    
	System.out.println("我想学习Java!");
	}

至此,我们对 Java 基本程序结构就有了初步的了解。而在上面,我们会发现一个名词:“关键字”,大家对此会有些疑惑:在 Java 中的关键字是什么,又有哪些是关键字呢?

关键字

关于关键字你只需要记住一点:Java 关键字就是 Java 语言中已经被赋予特定意义的一些单词

怎么理解呢?你可以设想一下你家新装修买了一扇门,你能叫这扇门为"天安门"吗?显然不能,在这里"天安门"就是关键字,就是一个被赋予了特殊意义的词。

图 1 列出了 Java 常用的一些关键字。

图1

大家可能会问:这么多我记不住怎么办?

没关系,现在你只需要混个脸熟就可以了,在后面的学习中不需要刻意的去记就能自然而然的记住了。

注意事项:Java 关键字是区分大小写的哦!所以 void 是关键字,但 Void 就不是了, public 是关键字 Public 就不是了~~

在 Java 的编写过程中我们还需要对一些程序进行注释,除了方便自己阅读外,更可以让别人更好地理解自己的程序,所以我们需要进行一些注释,注释内容可以是编程思路,也可以是程序的功能,总而言之就是方便自己和他人更好的阅读。

注释

在 Java 程序中,注释是一种给人阅读的文本,不是程序的一部分,所以编译器会自动忽略注释,Java 语言支持三种注释方式,它们分别是:

  • // 单行注释;
  • /* */ 多行注释;
  • /** */ 说明注释。

他们在 Java 程序中怎么使用呢?

例子:

/**我是说明注释 * 这是我的第一个 Java 程序 * @author admin * @version 1.2 */
public class Demo { 
// Demo 是类名    
	public static void main(String[] args) { 
	// 程序主方法,方法名为 main        
	// 我是单行注释        
		System.out.println("Hello world!");        
		/* 多行注释开始        
		注释内容        
		注释结束 */    
		}
		// main 方法结束
	} 
	// 类定义结束

通过上面的学习,我们对 Java 的结构以及语法规则已经有了一定了解,接下来我们将正式开始 Java 代码的编写。

输出方法

我们如何向显示器输出我们想要的内容呢?

System.out.print("");:将我们想要输出的内容放入双引号之间,该语句便可以将其输出到显示器。

语法如下:

/***输出内容*@author admin*类名:Demo*/
public class Demo {    
	//在主方法 main 中编写执行语句    
	public static void main(String[] args) {        
		//main 方法内部        
		System.out.print("我想学习Java!");
		// 输出:我想学习Java!    
		}
		// main 方法结束
	}// 类定义结束

执行结果:我想学习Java!

当我们想要输出多段话时:

/***输出内容**/
public class Demo {    
	public static void main(String[] args) {        
		System.out.print("我想学习Java!");        
		System.out.print("我一定会好好学习的。");        
		System.out.print("毛主席说:“好好学习,天天向上。”");    
		}
	}

执行结果:我想学习Java!我一定会好好学习的。毛主席说:“好好学习,天天向上。”

我们会发现该方法并不能帮我们换行输出,那又该怎么办呢?

System.out.println("");:该语句与System.out.print("");用法一致,都可以将内容输出,不同的是该语句输出后会进行换行。

public class Demo {    
	public static void main(String[] args) {        
		System.out.println("我想学习Java!");// 换行输出
    	System.out.println("我一定会好好学习的。");// 换行输出
    	System.out.println("毛主席说:“好好学习,天天向上。”");// 换行输出    
    	}
    }

执行结果如下:

我想学习Java!我一定会好好学习的。毛主席说:“好好学习,天天向上。”

我们从执行结果中看到最后会有一个空行,正是因为该方法会在输出后进行换行。

在上面的输出中,我们会发现该程序从上到下逐行地执行。Java 中语句执行顺序是由控制结构来决定的。

控制结构

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的,不同的控制结构具有不同的语句执行顺序。所以,我们必须清楚不同控制结构的语句执行顺序。

Java 的控制结构有三种,分别是顺序结构分支结构循环结构

顺序结构

顺序结构是程序中最简单最基本的流程控制,程序代码按照书写顺序从上到下逐行地执行。程序中大多数的代码都是这样执行的。总的来说:写在前面的先执行,写在后面的后执行。

例子:我们打印一个高为 3 底为 5 的直角三角形。

代码如下:

public class Demo {    
	public static void main(String[] args) {        
        System.out.println("    *");
        // 这一行换行输出由4个空格和1个*组成的字符串常量
        System.out.println("  ***");
        // 这一行换行输出由2个空格和3个*组成的字符串常量        
        System.out.print("*****");
        // 这一行输出由5个*组成的字符串常量,不换行。    
       	}
}

执行结果如下:

      *    ***  *****

我们上面的例子便是一个顺序结构的程序代码。

我们将在后面的实训中为大家详细介绍分支结构和循环结构,这里就不做介绍了。

字符串常量

Java 中使用双引号表示字符串常量,例如:“我想学习Java!”。它是一个不变的值,即这个符号所表示的值是无法被改变的。这里的常量实际上是字面常量。

字符串常量中出现的字符,例如’我’、‘a’、‘!’,在计算机中以特定的编码形式表示。Java 使用 Unicode 字符集,我们常用的字符编码形式主要有适用于西文符号的 ASCII 码和适用于中文符号的汉字机内码(来自于国标码 GB2312)。

ASCII码

ASCII 全称是 American Standard Code for Information Interchange, 是美国信息交换标准代码,只支持基础拉丁字符。 ASCII 使用 7 位(bits)表示一个字符,在计算机中用一个字节(byte)来存储一个 ASCII 字符,故最高位的取值永远为’0’,字符范围 0x00-0x7F,一共包含了 128 个字符。

ASCII 字符如下:

Bin(二进制)Oct(八进制)Dec(十进制)Hex(十六进制)缩写/字符解释
0000 00000000x00NUL(null)空字符
0000 00010110x01SOH(start of headline)标题开始
0000 00100220x02STX (start of text)正文开始
0000 00110330x03ETX (end of text)正文结束
0000 01000440x04EOT (end of transmission)传输结束
0000 01010550x05ENQ (enquiry)请求
0000 01100660x06ACK (acknowledge)收到通知
0000 01110770x07BEL (bell)响铃
0000 100001080x08BS (backspace)退格
0000 100101190x09HT (horizontal tab)水平制表符
0000 1010012100x0ALF (NL line feed, new line)换行键
0000 1011013110x0BVT (vertical tab)垂直制表符
0000 1100014120x0CFF (NP form feed, new page)换页键
0000 1101015130x0DCR (carriage return)回车键
0000 1110016140x0ESO (shift out)不用切换
0000 1111017150x0FSI (shift in)启用切换
0001 0000020160x10DLE (data link escape)数据链路转义
0001 0001021170x11DC1 (device control 1)设备控制1
0001 0010022180x12DC2 (device control 2)设备控制2
0001 0011023190x13DC3 (device control 3)设备控制3
0001 0100024200x14DC4 (device control 4)设备控制4
0001 0101025210x15NAK (negative acknowledge)拒绝接收
0001 0110026220x16SYN (synchronous idle)同步空闲
0001 0111027230x17ETB (end of trans. block)结束传输块
0001 1000030240x18CAN (cancel)取消
0001 1001031250x19EM (end of medium)媒介结束
0001 1010032260x1ASUB (substitute)代替
0001 1011033270x1BESC (escape)换码(溢出)
0001 1100034280x1CFS (file separator)文件分隔符
0001 1101035290x1DGS (group separator)分组符
0001 1110036300x1ERS (record separator)记录分隔符
0001 1111037310x1FUS (unit separator)单元分隔符
0010 0000040320x20(space)空格
0010 0001041330x21!叹号
0010 0010042340x22"双引号
0010 0011043350x23#井号
0010 0100044360x24$美元符
0010 0101045370x25%百分号
0010 0110046380x26&和号
0010 0111047390x27闭单引号
0010 1000050400x28(开括号
0010 1001051410x29)闭括号
0010 1010052420x2A*星号
0010 1011053430x2B+加号
0010 1100054440x2C,逗号
0010 1101055450x2D-减号/破折号
0010 1110056460x2E.句号
0010 1111057470x2F/斜杠
0011 0000060480x300字符0
0011 0001061490x311字符1
0011 0010062500x322字符2
0011 0011063510x333字符3
0011 0100064520x344字符4
0011 0101065530x355字符5
0011 0110066540x366字符6
0011 0111067550x377字符7
0011 1000070560x388字符8
0011 1001071570x399字符9
0011 1010072580x3A:冒号
0011 1011073590x3B;分号
0011 1100074600x3C<小于
0011 1101075610x3D=等号
0011 1110076620x3E>大于
0011 1111077630x3F?问号
0100 00000100640x40@电子邮件符号
0100 00010101650x41A大写字母A
0100 00100102660x42B大写字母B
0100 00110103670x43C大写字母C
0100 01000104680x44D大写字母D
0100 01010105690x45E大写字母E
0100 01100106700x46F大写字母F
0100 01110107710x47G大写字母G
0100 10000110720x48H大写字母H
0100 10010111730x49I大写字母I
0100 10100112740x4AJ大写字母J
0100 10110113750x4BK大写字母K
0100 11000114760x4CL大写字母L
0100 11010115770x4DM大写字母M
0100 11100116780x4EN大写字母N
0100 11110117790x4FO大写字母O
0101 00000120800x50P大写字母P
0101 00010121810x51Q大写字母Q
0101 00100122820x52R大写字母R
0101 00110123830x53S大写字母S
0101 01000124840x54T大写字母T
0101 01010125850x55U大写字母U
0101 01100126860x56V大写字母V
0101 01110127870x57W大写字母W
0101 10000130880x58X大写字母X
0101 10010131890x59Y大写字母Y
0101 10100132900x5AZ大写字母Z
0101 10110133910x5B[开方括号
0101 11000134920x5C反斜杠
0101 11010135930x5D]闭方括号
0101 11100136940x5E^脱字符
0101 11110137950x5F_下划线
0110 00000140960x60`开单引号
0110 00010141970x61a小写字母a
0110 00100142980x62b小写字母b
0110 00110143990x63c小写字母c
0110 010001441000x64d小写字母d
0110 010101451010x65e小写字母e
0110 011001461020x66f小写字母f
0110 011101471030x67g小写字母g
0110 100001501040x68h小写字母h
0110 100101511050x69i小写字母i
0110 101001521060x6Aj小写字母j
0110 101101531070x6Bk小写字母k
0110 110001541080x6Cl小写字母l
0110 110101551090x6Dm小写字母m
0110 111001561100x6En小写字母n
0110 111101571110x6Fo小写字母o
0111 000001601120x70p小写字母p
0111 000101611130x71q小写字母q
0111 001001621140x72r小写字母r
0111 001101631150x73s小写字母s
0111 010001641160x74t小写字母t
0111 010101651170x75u小写字母u
0111 011001661180x76v小写字母v
0111 011101671190x77w小写字母w
0111 100001701200x78x小写字母x
0111 100101711210x79y小写字母y
0111 101001721220x7Az小写字母z
0111 101101731230x7B{开花括号
0111 110001741240x7C垂线垂线
0111 110101751250x7D}闭花括号
0111 111001761260x7E~波浪号
0111 111101771270x7FDEL (delete)删除

注:垂线为 “|”。

Unicode 字符集

全世界有上百种语言,各国有各国的标准,会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

因此,Unicode 应运而生。Unicode 把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode 是用 0 至 65535 之间的数字来表示所有字符。其中 0 至 127 这 128 个数字表示的字符仍然跟 ASCII 完全一样。大部分汉字的 Unicode 编码在 4E00-9FA5 范围内。具体的符号对应表,可以查询 unicode.org ,或者专门的汉字对应表

需要注意的是,Unicode 只是一个符号集,它只规定了符号的二进制代码,并没有规定这个二进制代码应该如何存储。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。

/**
 * 任务:输出实心等腰三角形。
 * 类名为:OutputTriangle
 */
 
public class OutputTriangle {
    public static void main(String[] args) {
    	 // 请在下面的 Begin-End 处,按照所给的代码注释完成相应代码的编写
         /********** Begin **********/
         // 使用空格和*,向控制台输出一个高为4,底为7的等腰三角形,最后一个输出采用不换行输出


        /********** End **********/

    }
} 


开始你的任务吧,祝你成功!

2. 任务分析

1. 输入输出分析

输入: 无

输出: 使用空格和*,向控制台输出一个高为4,底为7的等腰三角形,最后一个输出采用不换行输出

2. 需求分析
  1. 使用空格和*,向控制台输出一个高为4,底为7的等腰三角形,最后一个输出采用不换行输出
  2. 也就是说,第一行要在低四个位置输入*,第二行要在345位置输入*
  3. 空格依次递减 3 2 1 0 循环递减 4-n
  4. 依次递增 1 3 5 7 2n-1
3. 所需知识

循环

4. 确认代码框架

外部循环 for

public class OutputTriangle { 
	public static void main(String[] args) { 
		for(int x = 1; x < 5; x = x+1) { 
			} 
		} 
	}

打印空格的循环

for(int i = 0; i<4 - x;i++){
    System.out.print(" ");
}

打印星号的循环

for(int j = 0; j<2*x - 1;j++){
    System.out.print("*");
}
5. 书写代码
public class OutputTriangle { 
	public static void main(String[] args) { 
		for(int x = 1; x < 5; x = x+1) { 
            for(int i = 0; i<4 - x;i++){
                System.out.print(" ");
            }
            for(int j = 0; j<2*x - 1;j++){
                System.out.print("*");
            }
			} 
		} 
	}

3. 代码

最终代码

public class OutputTriangle { 
	public static void main(String[] args) { 
		for(int x = 1; x < 5; x = x+1) { //换行代码
            for(int i = 0; i<4 - x;i++){//空格代码
                System.out.print(" ");
            }
            for(int j = 0; j<2*x - 1;j++){//星号代码
                System.out.print("*");
            }
            System.out.println();
			} 
		} 
	}

之前的代码

public class OutputTriangle {
    public static void main(String[] args) {
        // 请在下面的 Begin-End 处,按照所给的代码注释完成相应代码的编写
        /********** Begin **********/
        // 使用空格和*,向控制台输出一个高为4,底为7的等腰三角形,最后一个输出采用不换行输出
        int height = 4;
        int base = 7;

        for (int i = 1; i <= height; i++) {
            // 输出空格,使得每行的*能够居中
            for (int j = 1; j <= height - i; j++) {
                System.out.print(" ");
            }
            // 输出*,构成三角形
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            // 换行
            System.out.println();
        }
        /********** End **********/
    }
}

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值