分析
数值:a b c delt 解
步骤:
1、提示输入a b c
2、计算delt的值
3、利用公式求方程的解
import java.util.Scanner;
class Demo3_1{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入a b c的值:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double delt=b*b-4*a*c;
if(delt>0){
double r1=(-b+Math.sqrt(delt))/(2*a);
double r2=(-b-Math.sqrt(delt))/(2*a);
System.out.printf("r1=%.2f,r2=%.2f",r1,r2);
}else if(delt==0){
double r=(-b+Math.sqrt(delt))/(2*a);
System.out.printf("r=%.2f",r);
}else{
System.out.println("无实属根!");
}
}
}
分析
数值:方程组中的常数 x值 y值 a*d-b*c
步骤:
1、提示用户输入abcdef的值
2、根据公式计算x y值
3、计算a*d-b*c值
4、根据a*d-b*c值打印结果
import java.util.Scanner;
class Demo3_2{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入a,b,c,d,e,f的值:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double d = scanner.nextDouble();
double e = scanner.nextDouble();
double f = scanner.nextDouble();
double x = (e*d-b*f)/(a*d-b*c);
double y = (a*f-e*c)/(a*d-b*c);
double i = a*d-b*c;
if(i == 0){
System.out.print("方程式无解");
}else{
System.out.printf("x=%.2f,y=%.2f",x,y);
}
}
}
分析:
数值:今天是周几 未来几天后
步骤:
1、提示输入今天是周几
2、提示输入未来几天后
3、根据公式计算未来几天后是周几
4、将数值周几改成字符输出
import java.util.Scanner;
class Demo3_3{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入今天是周几:");
int today = scanner.nextInt();
System.out.println("未来几天后:");
int future = scanner.nextInt();
int futureDay = (today+future)%7;
String todayStr = "";
String futureDayStr = "";
if(today==0){
todayStr="周日";
}else if(today==1){
todayStr="周一";
}else if(today==2){
todayStr="周二";
}else if(today==3){
todayStr="周三";
}else if(today==4){
todayStr="周四";
}else if(today==5){
todayStr="周五";
}else if(today==6){
todayStr="周六";
}
switch(futureDay){
case 0:
futureDayStr="周日";
break;
case 1:
futureDayStr="周一";
break;
case 2:
futureDayStr="周二";
break;
case 3:
futureDayStr="周三";
break;
case 4:
futureDayStr="周四";
break;
case 5:
futureDayStr="周五";
break;
case 6:
futureDayStr="周六";
break;
}
System.out.println("今天是"+todayStr+"未来"+future+"天后是"+futureDayStr);
}
}
分析:
数值:输入一个数字 求出的反序数字
步骤:
1、提示用户输入一个数字
2、利用取余和除运算求各个位上的数字
3、求出反序数字
4、用反序数字和该数字比较
5、相等则是回文,否则不是
import java.util.Scanner;
class Demo3_4{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个三位数字");
int num = scanner.nextInt();
int temp=num;
int sum = 0;
sum = sum*10+num%10;
num/=10;
sum = sum*10+num%10;
num/=10;
sum = sum*10+num%10;
if(sum==temp){
System.out.println("这个数字是回文数字!");
}else{
System.out.println("这个数字不是回文数字!");
}
}
}
分析:
数值:一个随机的两位数 用户输入的一个两位数 将电脑和用户的两位数字拆分后得到的数字
步骤:
1、让程序随机的产生一个两位数
2、提示用户输入一个两位数
3、将电脑和用户的两位数字拆分
4、进行数字对比
5、打印结果
import java.util.*;
class Demo3_5{
public static void main(String[] args){
Random random = new Random();
int com = random.nextInt(90)+10;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个两位整数:");
int user = scanner.nextInt();
int a = com % 10;
int b = com / 10;
int c = user % 10;
int d = user / 10;
if(com==user){
System.out.print("恭喜您,获得奖金10000美元!");
}else if(a==d&&b==c){
System.out.print("恭喜您,获得奖金3000美元!");
}else if(a==c || a==d || b==c || b==d){
System.out.print("恭喜您,获得奖金1000美元!");
}else{
System.out.print("很遗憾,您未中奖!");
}
}
}
分析:
数值:用户输入一个0-2的整数 电脑随机产生一个0-2的整数 剪刀0 石头1 布2
步骤:
1、提示用户输入0-2的一个整数
2、电脑随机产生一个0-2的整数
3、对比两个数字,比较输赢
平局 com==user
用户赢 user=0 com=2 | user=1 com=0 | user=2 com=1
用户输 剩下的都是用户输
import java.util.Scanner;
import java.util.Random;
class Demo3_6{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入:剪刀0,石头1,布2:");
int user = scanner.nextInt();
Random random = new Random();
int com = random.nextInt(3);
String userStr ="";
String comStr ="";
switch(user){
case 0:
userStr="剪刀";
break;
case 1:
userStr="石头";
break;
case 2:
userStr="布";
break;
}
switch(com){
case 0:
comStr="剪刀";
break;
case 1:
comStr="石头";
break;
case 2:
comStr="布";
break;
}
if(user==com){
System.out.printf("用户是%s,电脑是%s,平局",userStr,comStr);
}else if(user==0&&com==2 || user==1&&com==0 || user==2&&com==1){
System.out.printf("用户是%s,电脑是%s,用户赢",userStr,comStr);
}else{
System.out.printf("用户是%s,电脑是%s,用户输",userStr,comStr);
}
}
}
分析:
数值:输入的年、月、日 星期几
步骤:
1、提醒用户输入年月日
2、根据题意对1、2月份进行处理
3、根据公式计算
4、用文字打印输出结果
import java.util.Scanner;
class Demo03_07{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.先输入年份
System.out.print("请输入年份:");
int year=scanner.nextInt();
//2.输入月份 1月 2月分别用13 14代替 同时year-1
System.out.print("请输入月份:");
int month=scanner.nextInt();
//3.输入日期
System.out.print("请输入日期:");
int day=scanner.nextInt();
//4.对特殊的1月和2月做处理
if(month==1||month==2){
month+=12;
year-=1;
}
//5.套公式
int h=(day+26*(month+1)/10+year%100+year%100/4+year/100/4+5*year/100)%7;
switch(h){
case 0:
System.out.println("是周六");
break;
case 1:
System.out.println("是周日");
break;
case 2:
System.out.println("是周一");
break;
case 3:
System.out.println("是周二");
break;
case 4:
System.out.println("是周三");
break;
case 5:
System.out.println("是周四");
break;
case 6:
System.out.println("是周五");
break;
}
}
}
分析:
数值:圆心坐标 圆的半径 输入点的坐标
步骤:
1、提示用户输入一个点的坐标
2、计算该点到圆心的距离
3、对比该距离个圆半径的大小
4、输出该点的位置
import java.util.Scanner;
class Demo3_8{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个点的坐标x y:");
double x = scanner.nextDouble();
double y = scanner.nextDouble();
double x0 = 0;
double y0 = 0;
double radius = 10;
double distance = Math.sqrt(Math.pow((x0-x),2)+Math.pow((y0-y),2));
if(distance==radius){
System.out.print("点在圆上");
}else if(distance>radius){
System.out.print("点在圆外");
}else{
System.out.print("点在圆内");
}
}
}
import java.util.Scanner;
class Demo03_09{
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&&x<=200&&y<=-0.5*x+100){
System.out.println("点再三角形内");
}else{
System.out.println("点再三角形外");
}
}
}
import java.util.*;
class Demo3_10{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个矩形的中心点坐标x,y和长,高:");
double x1 = scanner.nextDouble();
double y1 = scanner.nextDouble();
double w1 = scanner.nextDouble();
double h1 = scanner.nextDouble();
System.out.print("请输入第二个矩形的中心点坐标x,y和长,高:");
double x2 = scanner.nextDouble();
double y2 = scanner.nextDouble();
double w2 = scanner.nextDouble();
double h2 = scanner.nextDouble();
//计算第二个矩形中心点的范围
double inMinX = x1-(w1-w2)/2;
double inMaxX = x1+(w1-w2)/2;
double inMinY = y1-(h1-h2)/2;
double inMaxY = y1+(h1-h2)/2;
double outMinX = x1-(w1+w2)/2;
double outMaxX = x1+(w1+w2)/2;
double outMinY = y1-(h1+h2)/2;
double outMaxY = y1+(h1+h2)/2;
//判断是否在内或外或嵌套
if(x2>=inMinX&&x2<=inMaxX&&y2>=inMinY&&y2<=inMaxY){
System.out.println("在内");
}else if(x2>=outMaxX||x2<=outMinX||y2>=outMaxY||y2<=outMinY){
System.out.println("在外");
}else{
System.out.println("嵌套");
}
}
}
分析:
步骤:
1、输入一个数字
2、再判断数字是否为0
3、如果为0则退出,不是则继续
import java.util.Scanner;
class Demo3_11{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
double sum=0;
int positives=0;
int negatives=0;
System.out.print("请输入若干个数字:");
while(true){
int num = scanner.nextInt();
if(num!=0){
sum+=num;
if(num>0){
positives++;
}else{
negatives++;
}
}else{
break;
}
}
if(positives+negatives==0){
System.out.println("没有其他的数字,除了0!");
}else{
System.out.println("正数的个数为:"+positives);
System.out.println("正数的个数为:"+negatives);
System.out.println("数字的总和为:"+sum);
System.out.println("数字的平均值为:"+sum/(positives+negatives));
}
}
}
import java.util.Scanner;
class Demo03_12{
/*
21 42
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16~21
3 7
*/
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.输入两个数字
System.out.print("请输入两个数字:");
int n1=scanner.nextInt();
int n2=scanner.nextInt();
int gcd=1;
for(int i=n1<n2?n1:n2;i>=1;i--){
if(n1%i==0&&n2%i==0){
gcd=i;
break;
}
}
System.out.println(gcd);
}
}
分析:
/*
4 3 2 1 2 3 4
-3 -2 -2 0 1 2 3
第4行 x∈[-3,3] y=|x|+1
第5行 x∈[-4,4] y=|x|+1
*/
import java.util.Scanner;
class Demo03_14{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入行数:");
int line=scanner.nextInt();
for(int i=1;i<=line;i++){
for(int k=1;k<=(line-i);k++){
if(line<10){
System.out.print(" ");
}else{
System.out.print(" ");
}
}
for(int x=-(i-1);x<=i-1;x++){
if(line<10){
System.out.printf("%-2d",Math.abs(x)+1);
}else{
System.out.printf("%-3d",Math.abs(x)+1);
}
}
System.out.println();
}
}
}
class Demo03_15{
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();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int j=1;j<=7-i;j++){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int k=1;k<=6-i;k++){
System.out.print(" ");
}
for(int j=i;j>=1;j--){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int k=1;k<=i-1;k++){
System.out.print(" ");
}
for(int j=1;j<=7-i;j++){
System.out.print(j+" ");
}
System.out.println();
}
}
}
分析:
/*
第4行
1 2 4 8 4 2 1
0 1 2 3 2 1 0
x -3 -2 -1 0 1 2 3
第5行
1 2 4 8 16 8 4 2 1
0 1 2 3 4 3 2 1 0
x -4-3-2-1 0 1 2 3 4
*/
class Demo03_16{
public static void main(String[] args){
for(int i=1;i<=8;i++){
for(int k=1;k<=8-i;k++){
System.out.print(" ");
}
for(int x=-(i-1);x<=i-1;x++){
System.out.printf("%4d",(int)Math.pow(2,i-1-Math.abs(x)));
}
System.out.println();
}
}
}
/*
对于打印一些对称性的三角形图案或者是类似的问题
尽量向绝对值考虑
*/
来源:CSDN
作者:山阴路没有夏天
链接:https://blog.csdn.net/weixin_42668873/article/details/104255882