本次总结我将总结关于for循环语句的例题:
例1:
问题:如何用for循环来实现数字金字塔?
分析:
1.先输出每行的左边空格部分。
2.因为我们发现这些数字都是2的次幂,并且,左半边是2的次幂递增,右半边是2的次幂递减。所以,我们可以分成左半边和右半边打印。
3.因为输出的数字是整齐对称的,所以我们必须格式化输出数字。
代码实现:
class jinZiTa{
public static void main(String args[]){
for(int i=1;i<=8;i++){ //控制输出的行数
for(int j=32-i*4;j>0;j--){ //输出空格,输出的空格必须递减,这里设置为递减4
System.out.print(" "); //输出空格
}
for(int k=0;k<i;k++){ //输出左半边数字
System.out.printf("%4d",(int)Math.pow(2,k)); //%4d是指格式化输出整数
}
for(int n=i-2;n>=0;n--){ //输出右半边数字
System.out.printf("%4d",(int)Math.pow(2,n));
}
System.out.println(); //每行输出完以后换行
}
}
}
例二:
问题:如何判断一个点在三角形内?
分析:
1.计算出AD边的直线方程,判断点是否在AD的下面,X坐标是否大于0,Y坐标是否大于0;
代码实现:
import java.util.Scanner; //导入Scanner包,来实现用户输入步骤
class Text{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.提示用户输入一个点的坐标
System.out.print("请输入一个坐标:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
//2.先大致判断一下坐标的范围
//3.再精确的判断坐标的范围
if(x>=0&&y>=0&&y<=-0.5*x+100){
System.out.println("点在三角形内");
}else{
System.out.println("点在三角形外");
}
}
}
例三:
问题:如何判断一个小矩形在大矩形内?
让用户输入大小矩形的中心坐标以及宽高,然后判断小矩形是否在大矩形内。
分析:
1.提示用户输入大矩形与小矩形的中心点坐标,宽和高。
2.计算出小矩形满足在大矩形内,其终点坐标必须满足什么条件。
3.若相交,若小矩形在大矩形外满足的条件。
4.输出计结果。
经过分析,我们可以得到以下一个图:
其中矩形ABCD为题中的大矩形,最小的矩形为题中的小矩形。
1. 若小矩形满足在大矩形内,则其中心点的所有集合都在红色矩形内。
2. 若小矩形满足在大矩形外,则其中心点的所有集合都在蓝色矩形外。
代码实现:
import java.util.Scanner;
class Text{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.先输入大矩形的中心,宽和高
System.out.print("请输入第1个矩形的信息:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double w1=scanner.nextDouble();
double h1=scanner.nextDouble();
//2.再输入小矩形的中心,宽和高
System.out.print("请输入第2个矩形的信息:");
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double w2=scanner.nextDouble();
double h2=scanner.nextDouble();
//若小矩形在大矩形内,则其中心坐标的范围是
double inXMin=x1-(w1-w2)/2;
double inXMax=x1+(w1-w2)/2;
double inYMin=y1-(h1-h2)/2;
double inYMax=y1+(h1-h2)/2;
//若小矩形在大矩形外,则其中心坐标的范围是
double outXMin=x1-(w1+w2)/2;
double outXMax=x1+(w1+w2)/2;
double outYMin=y1-(h1+h2)/2;
double outYMax=y1+(h1+h2)/2;
//利用if-else判断
if(x2>=inXMin&&x2<=inXMax&&y2>=inYMin&&y2<=inYMax){
System.out.println("小矩形在大矩形里面!");
}else if(x2<=outXMin||x2>=outXMax||y2<=outYMin||y2>=outYMax){
System.out.println("小矩形在大矩形外面!");
}else{
System.out.println("小矩形和大矩形相交!");
}
}
}