选择语句
if-elseyuju
import java.util.Scanner;
class Text02{
public static void main(String[] args){
System.out.print("Enter a,b,c,d,e,f:"); //提示用户输入
Scanner scanner = new Scanner(System.in); //调用库函数,从键盘获取数字
double a = scanner.nextDouble(); //输入a
double b = scanner.nextDouble(); //输入b
double c = scanner.nextDouble(); //输入c
double d = scanner.nextDouble(); //输入d
double e = scanner.nextDouble(); //输入e
double f = scanner.nextDouble(); //输入f
if((a*d-b*c)==0){ //判断方程是否有解
System.out.println("The equation has no solution");//输出无解
}
else{ //有解计算
double x=(e*d-b*f)/(a*d-b*c); //计算x
double y=(a*f-e*c)/(a*d-b*c); //计算y
System.out.println("x is"+" "+x+" and y is"+" "+y); //输出x和y
}
}
}
运行结果:
(游戏:彩票)产生两位整数的彩票。程序提示用户输入一个两位整数,然 后依照下面的规则判定用户是否贏得奖金:
1 )如果用户输人的所有数匹配彩票的确切顺序,奖金是10 000美元。
2) 如果用户输人的所有数匹配彩票的所有数字,奖金是 3 000 美元。
3 )如果用户输人的其中一个数匹配彩票号码中的一个数,奖金是 1 000美元。
思路:
1.电脑随机产生一个两位数 a(23)
2.用户输入一个两位数 b (12)
3.拆分两个数字的组成:a%10=3,a=a/10=2,a%10=2;得到a由2和3组成
b%10=2,b=b/10=1,b%10=1;得到b由1和2组成
3.判断:若a=b,则满足条件一;
若两个数字组成相同且顺序不同,则满足条件二;
若两个数字的组成有且只有一个数字相同,则满足条件三;
若没有一个数字相同,则没中奖;
import java.util.Scanner;
class Text05{
public static void main(String[] args){
System.out.print("Enter a number:");
Scanner scanner = new Scanner(System.in);
int sum = scanner.nextInt(); //输入一个两位数
int m=sum;
int num = (int) (Math.random()*90+10); //电脑随机产生一个两位数
int n=num;
int a=sum%10; //得到a的个位数
sum=sum/10;
int b=sum%10; //得到a的十位数
int c=num%10; //得到b的个位数
num=num/10;
int d=num%10; //得到b的十位数
if(m==n){ //判断是否满足条件一
System.out.print("money is 10 000 dollar");
}
else if((a==c&&b==d)||(a==d)&&b==c){
System.out.print("money is 3000 dollar");//判断是否满足条件二
}
else if((a==c&&b!=d)||(a==d&&b!=c)||(b==c&&a!=d)||(b==d)&&(a!=c)){
System.out.print("money is 1000 dollar");//判断是否满足条件三
}
else{
System.out.print("have no money"); //没有中奖
}
}
}
科学:某天是星期几?
泽勒一致性是由克里斯汀 • 泽勒开发的用于计算某天是星期几的算法。
注意,公式中的除法执行一个整数相除。编写程序,提示用户输入年、月和该月的哪一天, 然后显示它是一周中的星期几
import java.util.Scanner;
class Text07{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("Enter year:");
int year = scanner.nextInt(); //输入年份
System.out.print("Enter month: 1-12:");
int m = scanner.nextInt(); //输入月份
System.out.print("Enter the day of the month: 1-31:");
int q = scanner.nextInt(); //输入天数
if(m==1){ //如果月份为1,则位上一年的13月即m=13;year--;
m=13;
year--;
}
else if(m==2){ //如果月份为1,则位上一年的13月即m=14;year--;
m=14;
year--;
}
int k = year%100; //计算k的值
int j = year/100; //计算j的值
int h = (q+(26*(m+1)/10)+k+k/4+j/4+5*j)%7; //计算h
if(h==0){ //如果h==0,则输出这天为周六
System.out.print("Day of the week is Saturday");
}
else if(h==1){ //如果h==1,则输出这天为周日
System.out.print("Day of the week is Sunday");
}
else if(h==2){ //如果h==2,则输出这天为周一
System.out.print("Day of the week is Monday");
}
else if(h==3){ //如果h==3,则输出这天为周二
System.out.print("Day of the week is Tuesday");
}
else if(h==4){ //如果h==4,则输出这天为周三
System.out.print("Day of the week is Wednesday");
}
else if(h==5){ //如果h==5,则输出这天为周四
System.out.print("Day of the week is Thursday");
}
else if(h==6){ //如果h==6,则输出这天为周五
System.out.print("Day of the week is Friday");
}
}
}
运行结果:
几何:点是否在三角形内?
假设一个直角三角形放在一个平面上,如下图所示。直角点在(0, 0) 处,其他两个点分别在(200, 0 ) 和(0, 100 ) 处。编写程序,提示用户输人一个点的; c 坐 标和7 坐标,然后判定这个点是否在该三角形内?
思路:
1.若要在三角形区域里面,则:0<= x <=200; 0 <= y <= -0.5x+200; 否则,就在三角形外面
import java.util.Scanner;
class Text09{
public static void main(String[] args){
System.out.print("Enter a point's x- and y-coordinates:");
Scanner scanner = new Scanner(System.in);
double x = scanner.nextDouble(); //输入点的x的坐标
double y = scanner.nextDouble(); //输入点的y坐标
if((0<x&&x<200)&&(0<y&&y<(-0.5)*x+100)){ //判断点在里面
System.out.print("The point is in the triangle");
}
else{ //否则就在外面
System.out.print("The point is not in the triangle");
}
}
}
运行结果:
几何:两个矩形
编写一个程序,提示用户输入两个矩形中点的x 坐标和: v 坐标以及它们的宽 度和高度,然后判定第二个矩形是在第一个矩形内,还是和第一个矩形重叠。
思路:
1.判断小矩形是否在大矩形里面:((w1/2-w2/2)>=Math.abs(x1-x2))&&((h1/2-h2/2)>=Math.abs(y1-y2))时小矩形在大矩形里面;
2.判断小矩形是否在大矩形左右两边:(x2-w2/2)>=(x1+w1/2)||(x2+w2/2)<=(x1-w1/2) 时小矩形不在大矩形里面;
3.判断小矩形是否在大矩形上下两边:(y2-h2/2)>=(y1+h1/2)||(y2+h2/2)<=(y1-h1/2) 时小矩形不在大矩形里面 ;
4.其他情况小矩形与大矩形相交;
import java.util.Scanner;
class Text10{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("Enter r1's center x-,y-coordinates,width,and height:");
double x1 = scanner.nextDouble(); //分别输入第一个矩形的中心坐标、宽和高
double y1 = scanner.nextDouble();
double w1 = scanner.nextDouble();
double h1 = scanner.nextDouble();
System.out.print("Enter r2's center x-,y-coordinates,width,and height:");
double x2 = scanner.nextDouble(); //分别输入第一个矩形的中心坐标、宽和高
double y2 = scanner.nextDouble();
double w2 = scanner.nextDouble();
double h2 = scanner.nextDouble();
if(((w1/2-w2/2)>=Math.abs(x1-x2))&&((h1/2-h2/2)>=Math.abs(y1-y2))){
System.out.println("r2 is inside r1"); //判断小矩形是否在大矩形里面
}
else{
if((x2-w2/2)>=(x1+w1/2)||(x2+w2/2)<=(x1-w1/2)){ //判断小矩形是否在大矩形左右两边(即外面)
System.out.println("r2 is not inside r1");
}
else if((y2-h2/2)>=(y1+h1/2)||(y2+h2/2)<=y1-h1/2){ //判断小矩形是否在大矩形上下两边(即外面)
System.out.println("r2 is not inside r1");
}
else{
System.out.println("r2 dose not overlap r1"); //两矩形相交
}
System.out.println("r2 dose not overlap r1"); //两矩形相交
}
}
}
运行结果:
显示金字塔:
提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案。
第一步:确定最外层循环-行数i:0 1 2 3 4 5 6 7
第二步:找出打印空格的规律k:7 6 5 4 3 2 1 0 i+k=7
第三步:找出要打印数字的规律:|i-1|
/*分析:
1.首先i表示行数;k表示空格数;拿第5行举例:当i等于5是:
要打印: 4 3 2 1 2 3 4 也就是打印|x-1| -3<=x<=3
i k
1 6 1
2 5 2 1 2 |x-1| 4 3 2 1 2 3 4
3 4 3 2 1 2 3 x-1 -4 -3 -2 -1 2 3 4
4 3 4 3 2 1 2 3 4 x -3 -2 -1 0 1 2 3
5 2 5 4 3 2 1 2 3 4 5
6 1 6 5 4 3 2 1 2 3 4 5 6 x(-3,3)
7 0 7 6 5 4 3 2 1 2 3 4 5 6 7 */
import java.util.Scanner;
class Text14{
public static void main(String[] args){
System.out.print("Enter the number of lines:"); //提醒用户输入信息
Scanner scanner = new Scanner(System.in);
int p = scanner.nextInt(); //输入一个1到15之间的数字
for(int i=1;i<=p;i++){ //最外层循环-表示行数
for(int k=1;k<=p-i;k++){ //内层循环-表示空格数
System.out.print(" "); //打印空格
}
for(int x=-(i-1);x<=(i-1);x++){ //与空格数的循环并列-表示要打印的数字
System.out.printf("%4d",Math.abs(x)+1); //打印数字
}
System.out.println(); //换行
}
}
}
运行结果:
使用for循环打印四个图案:
图案1:
第一步:确定外层for循环:行数 1 2 3 4 5 6
第二步:确定内层循环:找出打印的数字的规律 从1到i (1~i)
class Text15_01{
public static void main(String[] args){
for(int i=1;i<=6;i++){ //外层循环控制行数
for(int j=1;j<=i;j++){ //内层循环控制打印内容
System.out.print(j+" "); //打印的内容
}
System.out.println(); //换行
}
}
}
图案2:
/*
i 表示行数,j表示每行打印数字的最大值
i j
1 2 3 4 5 6 6 6
1 2 3 4 5 5 5
1 2 3 4 4 4
1 2 3 3 3
1 2 2 2
1 1 1
外层循环:1.循环初始化:i=6
2.循环继续条件:i>=1
3.循环体:整个内层循环
4.循环的周期,步长,间距:i--
内层循环:1.循环初始化:j=1
2.循环继续条件:j<=i
3.循环体:System.out.print(j+" ");
4.循环的周期,步长,间距:j++
*/
class Text15_02{
public static void main(String[] args){
for(int i=6;i>=1;i--){
for(int j=1;j<=i;j++){
System.out.print(j+" ");
}
System.out.println();
}
}
}
图案三:
/*
i表示行数;k表示打印的空格数;j表示打印数字的最大值
i k j i+k=6
1 1 5 1
2 1 2 4 2
3 2 1 3 3 3
4 3 2 1 4 2 4
5 4 3 2 1 5 1 5
6 5 4 3 2 1 6 0 6
外层循环:1.循环初始化:i=1
2.循环继续条件:i<=6
3.循环体:整个内层循环
4.循环的周期,步长,间距:i++
内层循环1:1.循环初始化:k=1
2.循环继续条件:i<=6-i
3.循环体:System.out.print(" ");
4.循环的周期,步长,间距:i++
内层循环2:1.循环初始化:j=1
2.循环继续条件:j>=1
3.循环体:System.out.print(j+" ");
4.循环的周期,步长,间距:j--
*/
class Text15_03{
public static void main(String[] args){
for(int i=1;i<=6;i++){ //外层循环-控制行数
for(int k=1;k<=6-i;k++){ //内层循环1-控制打印的空格数
System.out.print(" "); //打印空格
}
for(int j=i;j>=1;j--){ //内层循环2-控制打印的数字
System.out.print(j+" "); //打印数字
}
System.out.println(); //换行
}
}
}
图案四:
/*
i表示行数;j表示打印的空格数; k表示打印数字的最大值
i j k
1 2 3 4 5 6 1 0 6
1 2 3 4 5 2 1 5
1 2 3 4 3 2 4
1 2 3 4 3 3
1 2 5 4 2
1 6 5 1
*/
class Text15_04{
public static void main(String[] args){
for(int i=6;i>=1;i--){ //外层循环-控制行数
for(int j=6-i;j>=1;j--){ //内层循环1-控制打印空格数
System.out.print(" "); //打印空格
}
for(int k=1;k<=i;k++){ //内层循环2-控制的打印的数字
System.out.print(k+" "); //打印数字
}
System.out.println(); //换行
}
}
}
图案五:
/*
2^0
2^0 2^1 2^0
2^0 2^1 2^2 2^1 2^0
2^0 2^1 2^2 2^3 2^2 2^1 2^1
2^0 2^1 2^2 2^3 2^4 2^3 2^2 2^1 2^0
2^0 2^1 2^2 2^3 2^4 2^5 2^4 2^3 2^2 2^1 2^0 i x
1 1 8
1 2 1 2 7
1 2 4 2 1 3 6
1 2 4 8 4 2 1 4 5
1 2 4 8 16 8 4 2 1 5 4
1 2 4 8 16 32 16 8 4 2 1 6 3
1 2 4 8 16 32 64 32 16 8 4 2 1 7 2
1 2 4 8 16 32 64 128 64 32 16 8 4 2 1 8 1
y 0 1 2 3 4 3 2 1 0 i=5
x -4 -3 -2 -1 0 1 2 3 4 x=-y+4 x(-(i-1),i-1)
-y 0 -1 -2 -3 -4 -3 -2 -1 0 |x|=-y+n n=i-1 y=i-1-|x|
-y+4 4 3 2 1 0 1 2 3 4 要打印的是2^y
*/
class Text16_01{
public static void main(String[] args){
int a;
for(int i=1;i<=8;i++){ //外层循环-控制行数
for(int s=8-i;s>0;s--){ //内层循环1-控制打印空格数
System.out.print(" "); //打印空格
}
for(int j=-(i-1);j<=i-1;j++){ //内层循环2-控制打印的数字
System.out.printf("%4d",a=(int)(Math.pow(2,i-1-Math.abs(j))));
} //打印数字2^(i-1-|x|)
System.out.println(); //换行
}
}
}