从屌丝到架构师的飞越(入门篇)-循环结构

一、介绍

除了我们的选择结构外,在我们的java中还有一个重要的结构,叫循环结构,循环结构也是在我们的应用中比较广泛的,所以在这里呢,我们更加详细的解释循环的应用。

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。

二、内容

1、概述

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

2、循环四要素:

要想执行循环,我们得拥有循环执行的条件,循环四要素:

循环变量(变量初始化):

用于计算循环次数的变量。

循环条件(布尔表达式):

这是一个boolean 表达式,这个表达式能决定是否执行循环体。

循环变量改变(步进表达式):

这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

循环逻辑内容(循环体):

这个部分是循环体语句,也就是我们要多次做的事情。

3、for循环

for循环语句是最常用的循环语句,一般用在循环次数已知的情况下。

3.1、for循环语句的语法格式

格式:

for(初始化表达式①;布尔表达式②;步进表达式④){

循环体③

}

执行流程:

执行顺序: ①②③④>②③④>②③④… ②不满足为止。

①负责完成循环变量初始化

②负责判断是否满足循环条件,不满足则跳出循环

③具体执行的语句

④循环后,循环条件所涉及变量的变化情况

流程图:

/*

循环语句for:最常用的循环语句,一般用于已知循环次数

循环变量初始化 (初始化表达式)

循环出口(布尔表达式)

循环增量(步进表达式)

循环逻辑内容(循环体)

格式:

for(初始化表达式①;布尔表达式②;步进表达式④){

循环体③

}

执行顺序: ①②③④>②③④>②③④… ②不满足为止。

①负责完成循环变量初始化

②负责判断是否满足循环条件,不满足则跳出循环

③具体执行的语句

④循环后,循环条件所涉及变量的变化情况

需求:打印10次我爱java

*/

public class Demo07For{

public static void main(String[] args){

//打印10次我爱java

for(int x=0; x<10; x++){

System.out.println("我爱java!"+(x+1));

}

System.out.println("程序结束!");

}

}

3.2、for循环注意事项

3.2.1、①②③④四个部分均可以为空

当①为空时,注意变量作用域的范围变化

当②为空时,为条件永远为true的死循环

当③为空时,通常没有意义

当④为空时,可以将其加入到循环体中,或同样成为死循环

3.2.2、初始化表达式①的部分可以同时定义多个变量

步进表达式可以同时将多个循环相关变量改变,控制循环条件

/*

格式:

for(初始化表达式①;布尔表达式②;步进表达式④){

循环体③

}

执行顺序: ①②③④>②③④>②③④… ②不满足为止。

①负责完成循环变量初始化

②负责判断是否满足循环条件,不满足则跳出循环

③具体执行的语句

④循环后,循环条件所涉及变量的变化情况

for循环注意事项

a)①②③④四个部分均可以为空

当①为空时,注意变量作用域的范围变化

当②为空时,为条件永远为true的死循环

当③为空时,通常没有意义

当④为空时,可以将其加入到循环体中,或同样成为死循环

b)初始化表达式①的部分可以同时定义多个变量

步进表达式可以同时将多个循环相关变量改变,控制循环条件

*/

public class Demo08For{

public static void main(String[] args){

//打印10次我爱java

//当①为空时,注意变量作用域的范围变化

/*

int x=0;

for(; x<10; x++){

System.out.println("我爱java!"+(x+1));

}

//System.out.println(x);错误: 找不到符号

System.out.println(x);

*/

//当②为空时,为条件永远为true的死循环

/*

for(int x=0; ; x++){

System.out.println("我爱java!"+(x+1));

}

*/

//System.out.println("程序结束!");错误: 无法访问的语句

//当③为空时,通常没有意义

/*

for(int x=0; x<10; x++){

}

*/

//当④为空时,可以将其加入到循环体中,或同样成为死循环

/*

for(int x=0; x<10; ){

System.out.println("我爱java!"+(x+1));

//x++;

}

*/

/*

b)初始化表达式①的部分可以同时定义多个变量

步进表达式可以同时将多个循环相关变量改变,控制循环条件

*/

for(int x=0,y=0; x<10; x++,y +=2){

System.out.println("x = " + x + "  y = " + y);

}

}

}

3.3、for练习

3.3.1、在控制台输出10次HelloWorld

public class Demo01For {

public static void main(String[] args) {

//原始写法

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("HelloWorld");

System.out.println("-------------------------");

//用循环改进

for(int x=1; x<=10; x++) {

System.out.println("HelloWorld"+x);

}

}

}

3.3.2、获取数据1-5 和5-1

public class Demo02For {

public static void main(String[] args) {

//原始写法

System.out.println(1);

System.out.println(2);

System.out.println(3);

System.out.println(4);

System.out.println(5);

System.out.println("---------------------");

//使用for循环

for (int i = 1; i <= 5; i++) {

System.out.println(i);

}

System.out.println("---------------------");

//5-1

for (int i = 5; i>=1; i--) {

System.out.println(i);

}

}

}

3.3.3、求出1-5之间数据之和

public class Demo03For {

public static void main(String[] args) {

//1.定义一个初始化变量,记录累加求和,默认值为0

int sum = 0;

//2.使用for循环获取1-5之间的数据

for (int i = 1; i <= 5; i++) {

//3.把每一次for循环获取到的数据累加起来

/*

* 第一次:sum = 0 + 1 = 1

* 第二次:sum = 1 + 2 = 3

* 第三次:sum = 3 + 3 = 6

* 第四次:sum = 6 + 4 = 10

* 第五次:sum = 10 + 5 = 15

*/

//sum = sum + i;

sum += i;

}

//4.循环结束之后,打印累加结果

System.out.println("sum:"+sum);

}

}

3.3.4、求出1-100之间偶数和

public class Demo04For {

public static void main(String[] args) {

//1.定义一个初始化变量,记录累加求和,初始值为0

int sum = 0;

//2.利用for循环获取1-100之间的数字

for (int i = 1; i <= 100; i++) {

//3.判断获取的数组是奇数还是偶数

if(i%2==0){

//4.如果是偶数就累加求和

sum += i;

}

}

//5.循环结束之后,打印累加结果

System.out.println("sum:"+sum);

}

}

3.3.5、在控制台输出所有的“水仙花数”

所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。

举例:153就是一个水仙花数。

153 = 1*1*1 + 5*5*5 + 3*3*3

public class Demo05For {

public static void main(String[] args) {

//使用for循环获取所有的三位数

for (int i = 100; i < 1000; i++) {

//拆分个位,十位,百位

int ge = i%10;

int shi = i/10%10;

int bai = i/10/10%10;

//让获取到的个位,十位,百位的立方和相加和该数比较,如果相等就是水仙花数,在控制台输出

if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == i){

System.out.println(i);

}

}

}

}

3.3.6、统计“水仙花数”共有多少个

public class Demo06For {

public static void main(String[] args) {

//1.定义一个统计变量,初始值为0

int count = 0;

//2.使用for循环获取所有的三位数

for(int x=100; x<1000; x++) {

//3.拆分三位数的百位,十位,个位

int ge = x%10;

int shi = x/10%10;

int bai = x/10/10%10;

//4.利用公式判断这个三位数是否为水仙花数,如果是,统计变量++

if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {

count++;

}

}

//5.循环结束之后,打印统计结果

System.out.println("水仙花数共有:"+count+"个");

}

}

4、循环结构_while

4.1、while循环语句使用语法格式

基本格式:

while(布尔表达式) {

循环体语句;

}

扩展格式:

初始化表达式①

while(布尔表达式②){

循环体③

步进表达式④

}

执行流程:

执行顺序: ①②③④>②③④>②③④… ②不满足为止。

①负责完成循环变量初始化。

②负责判断是否满足循环条件,不满足则跳出循环。

③具体执行的语句。

④循环后,循环变量的变化情况。

流程图:

4.2、while练习

4.2.1、输出10次HelloWorld

public class Demo01While {

public static void main(String[] args) {

//使用for循环打印10次HelloWorld

for (int i = 1; i <=10; i++) {

System.out.println("HelloWorld");

}

System.out.println("--------------------");

//while循环实现打印10次HelloWorld

int i = 1;

while(i<=10){

System.out.println("HelloWorld");

i++;

}

}

}

4.2.2、求出1-100之和

public class Demo02While {

public static void main(String[] args) {

//回顾for循环 求1-100之和

//定义一个变量,记录累加求和

int sum = 0;

//利用for循环获取1-100之间的数字

for (int i = 1; i <= 100; i++) {

//累加求和

sum += i ;

}

//打印求和的变量

System.out.println("1-100的和是:"+sum);

//使用while循环实现

//定义一个变量,记录累加求和

sum = 0;

//定义初始化表达式

int i = 1;

//使用while循环让初始化表达式的值变化

while(i<=100){

//累加求和

sum += i ;

//步进表达式改变变量的值

i++;

}

//打印求和的变量

System.out.println("1-100的和是:"+sum);

}

}

4.2.3、While统计水仙花数有多少个(学生自己练习)

package StudyJavaSE;

public class WhileShuiXianhuashu {

public static void main(String[] args) {

//1.定义一个统计变量,初始值为0

int count = 0;

//2.使用for循环获取所有的三位数

for(int x=100; x<1000; x++) {

//3.拆分三位数的百位,十位,个位

int ge = x%10;

int shi = x/10%10;

int bai = x/10/10%10;

//4.利用公式判断这个三位数是否为水仙花数,如果是,统计变量++

if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {

count++;

}

}

System.out.println("水仙花数共有:"+count+"个");

count = 0;

//1.定义一个统计变量,初始值为100

int x = 100;

//2.使用while循环获取所有的三位数

while (x<1000) {

//3.拆分三位数的百位,十位,个位

int ge = x%10;

int shi = x/10%10;

int bai = x/10/10%10;

//4.利用公式判断这个三位数是否为水仙花数,如果是,统计变量++

if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {

count++;

}

x++;

}

//5.循环结束之后,打印统计结果

System.out.println("水仙花数共有:"+count+"个");

}

}

4.3、while循环注意事项

与for循环的循环变量作用域不同,for循环的循环变量其作用域仅限于循环体内,而while循环的循环变量作用域不局限在循环体内。

与for循环的循环条件为空是是死循环不同,while循环的循环条件不能为空。

我们经常会使用while(true)的方式根据需求完成一个死循环。

4.4、do while循环语句语法格式

基本格式:

do {

循环体语句;

}while(布尔表达式);

扩展格式:

初始化表达式①

do{

循环体③

步进表达式④

}while(布尔表达式②);

执行流程:

执行顺序: ①③④>②③④>②③④… ②不满足为止。

①负责完成循环变量初始化。

②负责判断是否满足循环条件,不满足则跳出循环。

③具体执行的语句

④循环后,循环变量的变化情况

流程图:

4.5、do while循环注意事项

do while循环的使用特点为无论是否满足条件,均至少会执行一次。

do while循环在日常开发中遇到的较少。

4.6、do while练习

4.6.1、输出10次HelloWorld

public class Demo01DoWhile {

public static void main(String[] args) {

//输出10次 HelloWorld

/*

for(int x=1; x<=10; x++) {

System.out.println("HelloWorld");

}

*/

//do...while改写

int x=1;

do {

System.out.println("HelloWorld");

x++;

}while(x<=10);

}

}

4.6.2、求出1-100之和(学生自己练习)

package StudyJavaSE;

/**

* do while 循环求出1-100之和。

* @author 奋斗蒙

*

*/

public class WhileBaiSum {

public static void main(String[] args) {

int sum = 0;

//使用while循环实现

//定义一个变量,记录累加求和

sum = 0;

//定义初始化表达式

int i = 1;

//使用while循环让初始化表达式的值变化

while(i<=100){

//累加求和

sum += i ;

//步进表达式改变变量的值

i++;

}

//打印求和的变量

System.out.println("1-100的和是:"+sum);

do {

System.out.println("1-100的和是:"+sum);

//累加求和

sum += i;

//步进表达式改变变量的值

i++;

} while (i<=100);

}

}

4.6.3、统计水仙花数有多少个(学生自己练习

package StudyJavaSE;

/**

* do while求水仙花数有多少个

* @author 奋斗蒙

*/

public class DoWhile {

public static void main(String[] args) {

int count = 0;

// 1.定义一个统计变量,初始值为100

int x = 100;

// 2.使用while循环获取所有的三位数

while (x < 1000) {

// 3.拆分三位数的百位,十位,个位

int ge = x % 10;

int shi = x / 10 % 10;

int bai = x / 10 / 10 % 10;

// 4.利用公式判断这个三位数是否为水仙花数,如果是,统计变量++

if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == x) {

count++;

}

x++;

}

// 5.循环结束之后,打印统计结果

System.out.println("水仙花数共有:" + count + "个");

do {

// 5.循环结束之后,打印统计结果

System.out.println("水仙花数共有:" + count + "个");

// 3.拆分三位数的百位,十位,个位

int ge = x % 10;

int shi = x / 10 % 10;

int bai = x / 10 / 10 % 10;

// 4.利用公式判断这个三位数是否为水仙花数,如果是,统计变量++

if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == x) {

count++;

}

x++;

} while (x< 1000);

}

}

4.7、While与do_while比较

4.7.1、需求:打印5次我爱java

/*

需求:打印5次我爱java

*/

public class Demo09WhileAndDoWhile{

public static void main(String[] args){

//while

//int i = 0;

int i = 5;

while(i < 5){

System.out.println("我爱java"+(i+1));

i++;

}

//System.out.println(i);

System.out.println("----------------------------------");

//do while

//int j = 0;

int j = 5;

do{

System.out.println("我爱java"+(j+1));

j++;

}while(j < 5);

}

}

5、循环嵌套

循环嵌套并不是一个新的知识点。只是在循环格式中嵌套使用了循环。

如for循环可以嵌套for循环:

for(初始化表达式; 循环条件; 操作表达式) {

………

for(初始化表达式; 循环条件; 操作表达式) {

执行语句

………

}

………

}

5.1、循环嵌套练习:

5.1.1、3排同学进行报数,每组5名同学,打印出我是第x排,第x个!

/*

循环嵌套:循环里边嵌套一个循环

最常用的格式:

for(){

for(){

}

}

需求:3排同学进行报数,每排5名同学,打印出我是第x排,第x个!

大毛,二毛,三毛,四毛,小明

小芳,杨幂,赵丽颖,高圆圆,杨颖

c罗,梅西,大罗,内马尔,柳岩

我是第1排,第1个!

我是第1排,第2个!

我是第1排,第3个!

我是第1排,第4个!

我是第1排,第5个!

我是第2排,第1个!

我是第2排,第2个!

我是第2排,第3个!

我是第2排,第4个!

我是第2排,第5个!

我是第3排,第1个!

我是第3排,第2个!

我是第3排,第3个!

我是第3排,第4个!

我是第3排,第5个!

*/

public class Demo10ForFor{

public static void main(String[] args){

for(int i=0; i<3; i++){//外层循环可以控制打印的行数

//System.out.println("我是第"+(i+1)+"排");

for(int j=0; j<5; j++){//内层循环可以控制每行打印几个

//System.out.println("我是第"+(j+1)+"个");

System.out.println("我是第"+(i+1)+"排,第"+(j+1)+"个!");

}

}

}

}

6、三种循环的区别

虽然可以完成同样的功能,但是还是有小区别:

do…while循环至少会执行一次循环体。

for循环和while循环只有在条件成立的时候才会去执行循环体

for循环语句和while循环语句的小区别:

使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。

循环使用推荐for -- while -- do..while

public class Demo02DoWhile {

public static void main(String[] args) {

/*

int x = 3;

while(x<3) {

System.out.println("我爱柳岩");

x++;

}

System.out.println("--------------");

int y = 3;

do {

System.out.println("我爱柳岩");

y++;

}while(y<3);

*/

for(int x=1; x<=10; x++){

System.out.println("爱生活,爱Java");

}

//这里的x无法继续访问

//System.out.println(x);

System.out.println("-----------------");

int y = 1;

while(y<=10) {

System.out.println("爱生活,爱Java");

y++;

}

System.out.println(y);

}

}

7、无条件分支跳转

在loop/switch选择或者循环过程中,我们总是满足布尔表达条件才能执行对应的代码,然而在这些逻辑过程中,可以使用一些关键字直接跳出正在执行的代码,去执行后边或者指定位置的代码,这些关键字一旦出现就可以跳转语句执行顺序。

(1)break 中断

(2)continue 继续

7.1 break关键字

用来跳出switch语句和循环语句

(1)break使用方式

无法单独使用,必须将break关键字置于switch或循环语句中。

(2)break运行规律

不需要判断任何条件,只要遇到break便直接跳出执行后续代码。会完全跳出选择或者循环结构。

break只能跳出最近的代码块,不能跨越多级代码块。

如:

for(int i=0; i<10; i++) {

if(i==5) {

break;

}

System.out.println(“我爱Java”+i);

}

//会从0-4输出5次“我爱Java”

/*

break语句:可以实现跳出循环

break使用方式

无法单独使用,必须将break关键字置于switch或循环语句中。

break运行规律

不需要判断任何条件,只要遇到break便直接跳出执行后续代码。会完全跳出选择或者循环结构。

break只能跳出最近的代码块,不能跨越多级代码块(多层循环)。

*/

public class Demo11Break{

public static void main(String[] args){

//无法单独使用,必须将break关键字置于switch或循环语句中。

//break;// 错误: 在 switch 或 loop 外部中断

//打印10次我想有个女同桌

//打印10次我想有个女同桌 在打印完第三次的时候跳出循环

/*

for(int i=0; i<10; i++){

if(i==3){

System.out.println("重要是事情说三遍就够了");

break;

}

System.out.println("我想有个女同桌"+(i+1));

}

System.out.println("程序结束");

*/

//需求:就让第一排同学报数

for(int i=0; i<3; i++){//外层循环可以控制打印的行数

//System.out.println("我是第"+(i+1)+"排");

for(int j=0; j<5; j++){//内层循环可以控制每行打印几个

//System.out.println("我是第"+(j+1)+"个");

if(i==1){

break;

}

System.out.println("我是第"+(i+1)+"排,第"+(j+1)+"个!");

}

}

}

}

7.2、continue关键字

(1)continue使用方式

无法单独使用,必须将continue关键字置于循环语句中。

(2)continue运行规律

不需要判断任何条件,只要遇到continue变直接跳出本轮循环进行下次循环。

如:

for(int i=0; i<10; i++) {

if(i==5) {

continue;

}

System.out.println(“我爱Java”+i);

}

//会从0-4、6-9输出9次“我爱Java”

/*

continue语句:跳出本次循环,执行下一次循环

continue使用方式

无法单独使用,必须将continue关键字置于循环语句中。

continue运行规律

不需要判断任何条件,只要遇到continue变直接跳出本轮循环进行下次循环。

*/

public class Demo12Continue{

public static void main(String[] args){

//continue;//错误: continue 在 loop 外部

/*

我想有个女同桌1

我想有个女同桌2

我想有个女同桌3

重要是事情说三遍就够了

我想有个女同桌5

我想有个女同桌6

我想有个女同桌7

我想有个女同桌8

我想有个女同桌9

我想有个女同桌10

*/

/*

for(int i=0; i<10; i++){

if(i==3){

System.out.println("重要是事情说三遍就够了");

continue;

}

System.out.println("我想有个女同桌"+(i+1));

}

System.out.println("程序结束");

*/

//需求:打印1-10之间的奇数

/*

1

3

5

7

9

*/

for(int i=0; i<10; i++){

if(i % 2 ==0){

continue;

//break;

}

System.out.println(i);

}

}

}

7.3、循环嵌套练习

按要求分析结果,并验证

public class Demo03BreakAndContinue {

public static void main(String[] args) {

for (int i = 1; i <= 10; i++) {

if (i % 3 == 0) {

// 分别写break,continue,说说输出几次

//break;//输出2次

continue;//输出7次

}

System.out.println("我爱Java!"+i);

}

}

}

7.4、标号语句(标签)跳转

当在双层循环或者循环内有switch选择语句时,我们发现,使用break或者continue所作用的对象均是内层语句,无法直接跳出外层循环,这时就需要使用标号语句跳转了。

(1)表达语句跳转的使用方式

在外层循环外的某行前边,使用后边跟有冒号”:”的标识符,即定义完毕。

使用时当在内层循环使用break或continue时后边紧跟之前定义的标号即可。

(2)表达语句跳转的运行规律

当外层循环外定义了标号

内层使用break,终止内外双层循环。

内层使用continue,终止内层循环,继续外层循环。

/*

标号:可以实现跳出多层循环

使用格式:

break 标号;

表达语句跳转的使用方式

在外层循环外的某行前边,使用后边跟有冒号”:”的标识符,即定义完毕。

使用时当在内层循环使用break或continue时后边紧跟之前定义的标号即可。

表达语句跳转的运行规律

当外层循环外定义了标号

内层使用break,终止内外双层循环。

内层使用continue,终止内层循环,继续外层循环。

continue标号

使用格式:

continue 标号;

*/

public class Demo13Break{

public static void main(String[] args){

//需求:就让第一排同学报数

/*

break

我是第1排,第1个!

我是第1排,第2个!

我是第1排,第3个!

我是第1排,第4个!

我是第1排,第5个!

第一排同学报数结束

continue

我是第1排,第1个!

我是第1排,第2个!

我是第1排,第3个!

我是第1排,第4个!

我是第1排,第5个!

第一排同学报数结束

我是第3排,第1个!

我是第3排,第2个!

我是第3排,第3个!

我是第3排,第4个!

我是第3排,第5个!

*/

itcast:for(int i=0; i<3; i++){//外层循环可以控制打印的行数

//System.out.println("我是第"+(i+1)+"排");

for(int j=0; j<5; j++){//内层循环可以控制每行打印几个

//System.out.println("我是第"+(j+1)+"个");

if(i==1){

System.out.println("第一排同学报数结束");

//break itcast;

continue itcast;

}

System.out.println("我是第"+(i+1)+"排,第"+(j+1)+"个!");

}

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容