/* 

生成三个随机数,只能用if语句进行由小到大排序。 

生成[-100,  100]的随机整数 

 */ 



 public  class  QuTest5 { 

public static void main( String[] args ){ 

int a = (int)( 201 * Math.random()) -100  ; 

int b = (int)( 201 * Math.random()) -100  ; 

int c = (int)( 201 * Math.random()) -100  ; 

System.out.println("随机产生的三个整数分别是: " + a + ", " + b + ", " + c ); 

 

int tem = 0; //准备此变量,帮助两个数进行交换。 

if( a > b ){ 

tem = a; 

a = b; 

b = tem; 
  

} 

 

if( a > c ){ 

tem = a; 

a = c ; 

c = tem ; 
  

} 

 

if( b > c ){ 

tem = b; 

b = c; 

c = tem; 
  

} 

 

System.out.println("对以上三个整数由小到大排序为: " + a + ", " + b + ", " + c ); 

} 

}

/*
打印100个5且每行10个。

 */


 public  class  QuTest6 {
public static void  main( String[] args ){
int n = 1; //计数器
 
while ( n <= 100 ) { //判断计数器中的数据超过了100吗
System.out.print( 5 + " " ); //打印

if( n % 10 == 0 ){
System.out.println(); //换行  
} 
n++; //计数

} //需要回再次判断计数器超过了100吗

System.out.println("\n\n程序结束了。");

}
 }/*

1 ------  36 
 */
 public class  QuTest7 {
public static void main( String[] args ) {
int a1 = (int)( 36 * Math.random() ) + 1;
int a2 = (int)( 36 * Math.random() ) + 1;

while( true ){
if( a2 == a1 ){
a2 = (int)( 36 * Math.random() ) + 1;
}else{
break;
}
}

int a3 = (int)( 36 * Math.random() ) + 1;

while( true ){
if( a3 != a2 && a3 != a1 ){
break;  
}
a3 = (int)( 36 * Math.random() ) + 1;
}

int a4 = (int)( 36 * Math.random() ) + 1;

while( true ){
if( a4 != a3 && a4 != a2 && a4 != a1 ){
break;  
}
a4 = (int)( 36 * Math.random() ) + 1;
}

int a5 = (int)( 36 * Math.random() ) + 1;

while( true ){
if( a5 != a4 && a4 != a3 && a4 != a2 && a4 != a1 ){
break;  
}
a4 = (int)( 36 * Math.random() ) + 1;
}
System.out.println("彩票为:);

//System.out.printf("彩票为:%02d, %02d, %02d, %02d, %02d  ",  a5 , a4 , a3 , a2 , a1 );
}


 }/*
1、什么是循环?

2、为什么需要循环?

3、当循环( while 循环 )的格式、规则?

4、循环的应用?(如何将循环与选择结合起来从而解决相对复杂的业务。)

5、直到循环( do---while 循环 )
1) 格式: 
do {
循环体;

}while( 条件 ); 


2) 规则:  先做循环体一次,接着,判断条件;若条件成立,则返回去继续执行
循环体;之后,再来判断条件;若条件仍然成立,则再次返回去继续执行
循环体;之后,再去判断条件;依此类推,直到条件为假而结束整个循环。

3) 案例:用while循环求 1 + 2 + 3 + ... + 100 = ??
之后,将其中的while循环演变为 do---while循环。


业务思想:  中心放射法

结论: while循环 与 do --- while循环的区别是: 前者先判断,后执行;后者是先执行,后判断。
即: do---while循环一定会执行一次。

思考: 用while循环或do---while循环同时完成[1, 100]范围内的奇偶数的分别累加。

6、从什么到什么循环( for循环 )
1) 格式:
for( 表达式1;  条件;  表达式3 ){
循环体;
}
2) 规则:
先做表达式,为循环准备控制变量;再判断条件,若条件成立,则做循环体一次;
之后,跳到表达式3处执行;接着,再来判断条件,若条件仍然成立,则继续
执行循环体;之后,再跳到表达式3处执行;接着,再去判断条件;依此类推,
当条件为假时,则结束整个for循环。


 */




 public class   LoopTest2 {
public static void main( String[] args ) {
/*
int n = 1;  //准备第一个数
int sum = 0; //准备一个存放结果的变量。

while ( n <= 100 ) { //判断给的数是否在100之内

sum = sum + n; //将每一个数加起来并存放到sum中。

n++; //准备下一个数

}//返回去再次判断 n 是否超出了100

System.out.println("\n1 + 2 + 3 + ... + 100 = " + sum );

*/

int n = 1;  //准备第一个数
int sum = 0; //准备一个存放结果的变量。

do { //判断给的数是否在100之内

sum = sum + n; //将每一个数加起来并存放到sum中。

n++; //准备下一个数

} while ( n <= 100 ) ; 

System.out.println("\n1 + 2 + 3 + ... + 100 = " + sum );
}
 }
/*


6、从什么到什么循环( for循环 )
1) 格式:
for( 表达式1;  条件;  表达式3 ){
循环体;
}
2) 规则:
先做表达式,为循环准备控制变量;再判断条件,若条件成立,则做循环体一次;
之后,跳到表达式3处执行;接着,再来判断条件,若条件仍然成立,则继续
执行循环体;之后,再跳到表达式3处执行;接着,再去判断条件;依此类推,
当条件为假时,则结束整个for循环。

3) 案例: 求1 + 2 + 3 + ... + 100 = ??

思考:
用for循环完成 [1, 200]范围内奇数的累加?
 */
 public class  ForTest1 {
public static void main( String[] args ) {

int sum = 0; //准备一个用来存放结果的变量

//从1 加到 100 ; 进行循环累加。

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

sum = sum + n; //将每个数累加起来。 

}

System.out.println("\n1 + 2 + 3 + ... + 100 = " + sum );
}
 }
/*
打印一个 5 

打印五个 5  
5 5 5 5 5 
 
打印
5 5 5 5 5 
5 5 5 5 5 
5 5 5 5 5 
5 5 5 5 5 
5 5 5 5 5 

 
打印
5  
5 5 
5 5 5 
5 5 5 5
5 5 5 5 5 


 */


 public  class  ReloopTest1 {
public static void main( String[] args ) {
int x = 5;

for( int row = 1;  row <= 5;  row++ ){ //从1 行 到  5行 循环
int n = 1;
while( n <= row ) {
System.out.print( x + " " );
n++;
}
System.out.println(); //换行
x++;

}
}


 }/*
1、什么是嵌套循环?
它指的是一个循环的循环体中包含了另一个循环。

2、为什么需要嵌套,嵌套循环又是如何进行的?

通过案例来理解为什么需要嵌套循环.

A

A A A A A  (从1个到5个A的输出)

A A A A A
A A A A A
A A A A A
A A A A A
A A A A A

嵌套循环又是如何进行的?
画出嵌套循环的执行顺序图

A A A A A
B B B B B
C C C C C
D D D D D 
E E E E E 

A  
B B 
C C C  
D D D D  
E E E E E  


   A  
  B B 
 C C C  
D D D D  
E E E E E
 */


 public class  ReloopTest2{
public static void main( String[] args ) {
char ch = 'A';

for(int row = 1;  row <= 15;  row++ ){  //从1行 到 15行 循环打印  

//先输出空格
for( int k = 1;  k <= 15-row;  k++){ //每一行的空格数为: 总行数-第几行
System.out.print(" "); 
}


//以下循环用来输出一行
for( int n = 1;  n <= row;  n++ ){

System.out.print( ch + " ");

}

System.out.println();//光标换到下一行
ch += 1; //为下一行准备新字母

}


}
 }/*
1、Java中的特殊语句:   break语句。

1) 它用于何处?
a) 循环体中。
b) switch语句中。

2) 它用来干什么?
a) 用来在某种条件下结束循环。

b) 用来结束switch语句。


 */


 public class  BreakTest1 {
public static void main (String[] args ){
int sum = 0;
/*
int i = 1;

while( i <= 100 ) {
sum += i;

if( sum >= 1000 ){
break; //结束循环而往下走 
}

i++;
}
System.out.println("1 + 2 + 3 + ... + " + i + " = " + sum );
*/
int loc = 0; 

for( int i = 0;  i <= 100;  i++ ){ //变量i的作用域从第34到42行.

sum += i ;
loc = i; //记住i的值

if( sum >= 1000 ){
break; //结束循环  
}

}

System.out.println("1 + 2 + 3 + ... + " + loc  + "  = " + sum );

}


 }public class  BreakTest2 {
public static void main( String[] args ) {
int x = 1;

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

System.out.print( x + " " );
if( j == i ){
break;  //结束内循环
}
} 
System.out.println();//换行 
x++;
}

/*
x i   (i<=5)    j   (j<=5)
1 1  1
2 2  1
 2
3 3  1


1 
2 2 

*/
}
 }/*
1、Java中的特殊语句:  continue语句
1) 它用于何处?
它只用于循环体中。

2) 它用来干什么?
它用来结束本次循环,跳到下一次循环的准备处或判断处。

 */


 public class  ContinueTest1  {


public static void main( String[] args ) {
int x = 1;

for( int i = 1;  i <= 5;   i++ ){
for( int j = 1;  j <= 5;  j++ ){ 
if( j == i ){
continue;  //跳到j++处,为下一次循环作准备。 
}
System.out.print( x + " " );
}
System.out.println();
x++;
}

}


 }/*
将[1 , 2000]范围中能同时被3和8整除的数一一显示且每行10个显示。

同时,要求程序中必须使用continue语句。

continue用来结束本次循环,跳到下一次循环的准备处
 */


 public  class  ContinueTest2 {
public static void main (String[] args ) {
int x = 0; //计数器

for( int n = 1;  n <= 2000;  n++ ){

if( !(n%3 == 0 && n%8 == 0) ){
continue; //跳到n++处 
}


System.out.printf( "%6d" , n ); 
x++; //计数
if( x == 10 ){
System.out.println();//换行 
x = 0;
}


}
}
 }/*
键盘输入,要实现它,只要三个步骤即可。

1、导入 import java.util.Scanner;
2、创建 Scanner  sc = new  Scanner(System.in);
3、输入 int x = sc.nextInt();

 */


 import java.util.Scanner; //1 导入


 public class  KeyboardInput {
public static void main (String[] args ) {
Scanner  sc = new  Scanner(System.in); //2 创建

System.out.print("请输入一个整数[0 或 负数就退出]>>> ");
int x = sc.nextInt(); //3 输入

while( true ) {
if( x <= 0 ){
break; //结束循环  
} 

System.out.println("\n你输入的整数是>>> " + x );
System.out.print("\n请继续输入一个整数[0 或 负数就退出]>>>>");
x = sc.nextInt();
}

System.out.println("\n\n程序结束了。");
}
 }