3.1解一元二次方程
/*
数据:a,b,c,判别式Δ=b^2-4ac,实根r1和r2
指令:输入 计算判别式 判别实根个数 计算实根 输出结果
步骤:
1.提示用户输入a、b和c的值。
2.根据b^2-4ac的判别式来计算一元二次方程的实根个数,并将实根个数输出。
3.通过一元二次方程的求根公式计算一元二次方程的实根的值,并将其输出。
*/
import java.util.Scanner;
class Demo03_01{
public static void main(String[] args){
//1.
System.out.print("Enter a, b, c: ");
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
double c = input.nextDouble();
//2.
double delta = b * b - 4 * a * c;
//3.
if (delta > 0){
double r1 = ( - b + Math.pow(delta, 0.5)) / (2 * a);
double r2 = ( - b - Math.pow(delta, 0.5)) / (2 * a);
System.out.print("The equation has two roots " + r1 + " and " + r2);
}
else if (delta == 0){
double r = (-b) / (2 * a);
System.out.print("The equation has one root " + r);
}
else if (delta < 0){
System.out.print("The equation has no real roots");
}
}
}
3.2求解线性方程
/*
数据:a,b,c,d,e,f,解x和y
指令:输入 计算ad-bc 判断是否有解 计算解 输出结果
步骤:
1.提示用户输入 a、b、c、d、e 和f。
2.进行ad-bc是否为0的条件判断,判断方程式是否有解
3.根据求解公式计算方程式的解并显示
4.显示方程式的结果
*/
import java.util.Scanner;
class Demo03_02{
public static void main(String[] args){
//1.
System.out.print("Enter a, b, c, d, e, f: ");
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
double c = input.nextDouble();
double d = input.nextDouble();
double e = input.nextDouble();
double f = input.nextDouble();
//2.
if (a * d - b * c == 0){
System.out.println("The equation has no solution");
}
else{
//3.
double x = (e * d - b * f) / (a * d - b * c);
double y = (a * f - e * c) / (a * d - b * c);
System.out.println("x is " + x + " and y is " + y);
}
}
}
3.3找到将来的星期
/*
数据:今天是周几 今天之后的天数 将来是周几
指令:输入
步骤:
1.提示用户输入今天是周几
2.提示用户输入今天之后的天数
3.计算将来是周几公式如下:
将来是周几 = (今天是周几 + 今天之后的天数) % 7
4.将计算出来的数字转换为 "周几" 字符串
5.将结果输出
*/
import java.util.Scanner;
class Demo03_03{
public static void main(String[] args){
//1.
Scanner input = new Scanner(System.in);
System.out.print("今天是周几:");
int today = input.nextInt();
//2.
System.out.print("今天之后的天数:");
int future = input.nextInt();
//3.
int futureDay = (today + future) % 7;
//4.
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 = "周六";
}
if (futureDay == 0){
futureDayStr = "周日";
}
else if (futureDay == 1){
futureDayStr = "周一";
}
else if (futureDay == 2){
futureDayStr = "周二";
}
else if (futureDay == 3){
futureDayStr = "周三";
}
else if (futureDay == 4){
futureDayStr = "周四";
}
else if (futureDay == 5){
futureDayStr = "周五";
}
else if (futureDay == 6){
futureDayStr = "周六";
}
//5.
System.out.print("今天是" + todayStr + "将来是" + futureDayStr);
}
}
3.4回文数字
/*
数据:输入的数字 对输入数字的备份 输入数字的逆序
指令:输入 循环计算 输出
步骤:
1.提示用户输入一个数字
2.将输入的数字进行备份
3.对输入的数字进行逆序的计算
sum = sum * 10 + num % 10;
num /= 10;
4.输出结果
*/
import java.util.Scanner;
class Demo03_04{
public static void main(String[] args){
//1.
System.out.print("请输入一个数:");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
//2.
int numBackup = num;
//3.
int sum=0;
while (num != 0){
sum = sum * 10 + num % 10;
num /= 10;
}
//4.
if (sum == numBackup){
System.out.print("该数是回文");
}
else{
System.out.print("该数是不回文");
}
}
}
3.5彩票
/*
数据:随机两位数 输入的两位数 个位 十位
指令:输入 产生随机数 计算 进行匹配 输出
步骤:
1.提示用户输入一个两位数
2.使用Random类的nextInt()方法产生一个随机两位数:nextInt(90)+10 区间:[0,90) -> [10,100)
3.分别计算输入数和随机数的个位、十位
个位 十位
输入数 a b
随机数 x y
4.进行条件判断,输出结果
4.1 a==x&&b==y 奖金10 000美元
4.2 a==y&&b==x 奖金 3 000美元
4.3 a!=x&&a!=y&&b!=x&&b!=y 没有中奖
4.4 else 奖金 1 000美元
*/
import java.util.Scanner;
import java.util.Random;
class Demo03_05{
public static void main(String[] args){
//1.
System.out.print("请输入一个两位数:");
Scanner input = new Scanner(System.in);
int ab = input.nextInt();
//2.
Random random = new Random();
int xy = 64;
//int xy = random.nextInt(90) + 10;
//3.
int a = ab / 10 % 10;
int b = ab % 10;
int x = xy / 10 % 10;
int y = xy % 10;
//4.
if(a == x && b == y){
System.out.print("10 000");
}
else if(a == y && b == x){
System.out.print("3000");
}
else if(a != x && a != y && b != x && b != y){
System.out.print("0");
}
else{
System.out.print("1000");
}
System.out.println();
System.out.print(xy);
}
}
3.6剪刀石头布
/*
Math.random() 随机数区间[0,1.0)
Random方法nwxtInt(n) 随机区间0到n-1的整数
数据:随机产生数字 用户输入数字 数字范围0(剪刀)1(石头)2(布)
指令:输入 随机产生数 将数字与字符匹配 判断 输出
步骤:
用户赢 usr com ((com+1)%3==usr)
0 2 3 0
1 0 1 1
2 1 2 2
1.提示用户随机输入一个数
2.创建Random对象,使用nextInt()方法随机产生数
3.将数与字符匹配
4.判断输赢,并输出结果
*/
import java.util.Random;
import java.util.Scanner;
class Demo03_06{
public static void main(String[] args){
//1.
System.out.print("随机输入一个数 剪刀 0 石头 1 布 2 :");
Scanner input = new Scanner(System.in);
int usr = input.nextInt();
//2.
Random random = new Random();
int com = random.nextInt(3);
//3.
String usrStr = "";
String comStr = "";
switch (usr){
case 0:
usrStr = "剪刀";
break;
case 1:
usrStr = "石头";
break;
case 2:
usrStr = "布";
break;
}
switch (com){
case 0:
comStr = "剪刀";
break;
case 1:
comStr = "石头";
break;
case 2:
comStr = "布";
break;
}
//4.
if (usr == com){
System.out.printf("平局 计算机是%s,你是%s",comStr,usrStr);
}
else if((com+1) % 3 == usr){
System.out.printf("你赢了 计算机是%s,你是%s",comStr,usrStr);
}
else{
System.out.printf("你输了 计算机是%s,你是%s",comStr,usrStr);
}
}
}
3.7某天是星期几
/*
数据:年year 月m 日q 星期几h 世纪数j 世纪的第几年k
指令:输入 计算 switch判断 输出
步骤:
1.提示用户输入 年 月 日
2.如果是1,2月,将月份+12,年份-1
3.根据公式计算
4.使用switch判断星期几
5.输出结果
*/
import java.util.Scanner;
class Demo03_07{
public static void main(String[] args){
//1.
Scanner input = new Scanner(System.in);
System.out.print("输入年:");
int year = input.nextInt();
System.out.print("输入月:");
int m = input.nextInt();
System.out.print("输入日:");
int q = input.nextInt();
//2.
switch (m){
case 1:
m = 13;
year--;
break;
case 2:
m = 14;
year--;
break;
}
//3.
int j = year / 100;
int k = year % 100;
int h = (q + 26 * (m + 1) / 10 + k + k / 4 + j / 4 + 5 * j) % 7;
//4.
String weekStr = "";
switch(h)
{
case 0:
weekStr = "星期六";
break;
case 1:
weekStr = "星期天";
break;
case 2:
weekStr = "星期一";
break;
case 3:
weekStr = "星期二";
break;
case 4:
weekStr = "星期三";
break;
case 5:
weekStr = "星期四";
break;
case 6:
weekStr = "星期五";
break;
}
//5.
System.out.print("是" + weekStr);
}
}
3.8点是否在圆内
/*
数据:点(a,b) 圆心(0,0) 半径10 输入的点(x,y) 点到圆心的距离
指令:输入 计算 判断位置 输出
步骤:
1. 提示输入点的位置
2.计算点到圆心的距离
3.通过距离和半径的比较得到位置
4.输出结果
*/
import java.util.Scanner;
class Demo03_08{
public static void main(String[] args){
//1.
System.out.print("输入一个点(x,y):");
Scanner input = new Scanner(System.in);
double x = input.nextDouble();
double y = input.nextDouble();
//2.
double a = 0;
double b = 0;
double distance=Math.sqrt(Math.pow(x-a,2)+Math.pow(y-b,2));
//3.
if(distance < 10){
System.out.print("点在圆内");
}
else if(distance == 10){
System.out.print("点在圆上");
}
else if(distance > 10){
System.out.print("点在圆外");
}
}
}
3.9点是否在三角形内
/*
数据:x坐标 y坐标 关系y=(-100/200)*x+100
指令:输入 比对 输出
步骤:
1.提示用户输入一个点
2.判断点的位置 两个条件 0<x<200 0<y<100
3.输出结果
*/
import java.util.Scanner;
class Demo03_09{
public static void main(String[] args){
//1.
System.out.print("输入一x坐标和y坐标:");
Scanner input = new Scanner(System.in);
double x = input.nextDouble();
double y = input.nextDouble();
double f = (-100.0 / 200.0) * x + 100;
//2.
if(0 <= x && x <= 200){
if(0 <= y && y <= f){
System.out.print("点在三角形内");
}
else{
System.out.print("点在三角形外");
}
}
}
}
3.10两个矩形
/*
数据:矩形中点x坐标 y坐标 宽度 高度
指令:
步骤:
1.提示用户输入两个矩形中点x坐标和y坐标以及他们的宽度和高度
2.如果 Math.abs(x2-x1) < (width1+width2)/2
且 Math.abs(y2-y1) < (height1+height2)/2
说明第二个在第一个内或者和第一个重合
在这个基础上
如果 Math.abs(x2-x1) > (width1-width2)/2
且 Math.abs(y2-y1) > (height1-height2)/2
第二个就与第一个重叠
*/
import java.util.Scanner;
class Demo03_10{
public static void main(String[] args){
//1.
Scanner input = new Scanner(System.in);
System.out.print("第一个矩形的x坐标y坐标宽度和高度:");
double x1 = input.nextDouble();
double y1 = input.nextDouble();
double width1 = input.nextDouble();
double height1 = input.nextDouble();
System.out.print("第二个矩形的x坐标y坐标宽度和高度:");
double x2 = input.nextDouble();
double y2 = input.nextDouble();
double width2 = input.nextDouble();
double height2 = input.nextDouble();
//2.
if(Math.abs(x2-x1) < (width1+width2)/2 && Math.abs(y2-y1) < (height1+height2)/2){
if(Math.abs(x2-x1) > (width1-width2)/2 && Math.abs(y2-y1) > (height1-height2)/2){
System.out.print("第二个矩形和第一个重叠");
}
else{
System.out.print("第二个矩形在第一个矩形内");
}
}
else{
System.out.print("第二个矩形在第一个矩形外");
}
}
}
3.11统计正数和负数个数并计算平均值
/*
数据:读入的数 读入的个数 和 正数的个数 负数的个数
指令:
步骤:
1. 提示用户输入几个数并以0为止
2. 以读到0为止的循环
2.1 读到的数大于0 正数个数加一
2.2 读到的数小于0 负数个数加一
2.3 求读到数的和
3. 输出结果
*/
import java.util.Scanner;
class Demo03_11{
public static void main(String[] args){
//1.
Scanner input = new Scanner(System.in);
System.out.print("输入几个数,以0为结束");
int i = 0;
int j = 0; //计数器 正数的个数i 负数的个数j
double sum = 0; //求和用
int a = 0; //临时存每一个数
//2.
while( (a = input.nextInt()) != 0)
{
if(a > 0){
++i; //2.1
}else if(a < 0){
++j; //2.2
}
sum = sum + a; //2.3
}
//3.
if(i == 0 && j == 0){
System.out.print("还没有输入数字");
}
else{
System.out.print("正数有" + i + "个,负数有" + j + "个,和为" + sum + "平均值为" +sum/(i+j));
}
}
}
3.12求最大公约数
/*
数据:n1 n2 循环初始化k gcd
指令:输入 循环 分支 输出
步骤:
1.提示用户输入两个整数
2.求最大公约数
循环:
1.初始化 k=2
2.继续条件 k大于n1或n2
3.循环体 判断是否是公约数
4.周期 k++
3.输出
*/
import java.util.Scanner;
class Demo03_12{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("输入两个整数:");
int n1 = input.nextInt();
int n2 = input.nextInt();
int max = n1 > n2 ? n1 : n2;
int gcd = 1;
for(int k = 2;k <= max;k++){
if(n1%k==0 && n2%k==0){
gcd = k;
}
}
System.out.print("最大公约数为:" + gcd);
}
}
3.13找出一个整数的因子
/*
数据:输入的数n 因子i
指令:输入 循环 分支 输出
步骤:
1.提示用户输入一个整数
2.n能被i整除时i就是一个因子
3.输出
循环终止条件是 n=1
*/
import java.util.Scanner;
class Demo03_13{
public static void main(String[] args){
//1.
System.out.print("请输入一个整数");
Scanner input = new Scanner(System.in);
//2.
int n = input.nextInt();
int i = 2;
while (n > 1) {
if (n % i == 0) {
n = n / i;
System.out.print(i + ".");
}
else {
i++;
}
}
}
}
3.14显示金字塔
/*
分析循环输出n行
分成两部分输出
第一部分是倒三角 第二部分 i j(空格) k
******** 1 1 2*(5-1) 1
****** 2 1 2 2 2*(5-2) -2 1 2
**** 3 2 1 2 3 3 2*(5-3) -3 -2 1 2 3
** 4 3 2 1 2 3 4 4 2*(5-4) -4 -3 -2 1 2 3
5 4 3 2 1 2 3 4 5 5 2*(5-5) -5 -4 -3 -2 1 2 3 4 5
n 2*(n-i) -i -i+1 -i+2 …… 1 2 …… i-1 i
*/
import java.util.Scanner;
class Demo03_14{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("输入一个1~15的整数");
int n = input.nextInt();
for(int i=1;i<=n;i++){
for(int j=1;j<=n-i;j++){
System.out.print(" ");
}
for(int k=-i;k<=i;k++){
if(k!=-1&&k!=0){
System.out.print(" "+Math.abs(k));
}
}
System.out.println();
}
}
}
3.15使用循环语句打印四个图案
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();
System.out.println();
for(int i=6;i>=1;i--){
for(int j=1;j<=i;j++){
System.out.print(j + " ");
}
System.out.println();
}
System.out.println();
System.out.println();
for(int i=1;i<=6;i++){
for(int j=1;j<=6-i;j++){
System.out.print(" ");
}
for(int k=-i;k<=i;k++){
if(k<0){
System.out.print(" "+Math.abs(k));
}
}
System.out.println();
}
System.out.println();
System.out.println();
for(int i=6;i>=1;i--){
for(int j=1;j<=6-i;j++){
System.out.print(" ");
}
for(int j=1;j<=i;j++){
System.out.print(j + " ");
}
System.out.println();
}
}
}
3.16打印金字塔形的数字
class Demo03_16{
public static void main(String[] args){
for(int i=1;i<=8;i++){
for(int j=1;j<=8-i;j++){
System.out.print(" ");
}
for(int k=-i;k<=i;k++){
if(k!=-1&&k!=0){
int x = Math.abs((Math.abs(k)-i));
System.out.printf( "%4d",(int)Math.pow(2,x));
}
}
System.out.println();
}
}
}
来源:CSDN
作者:けい
链接:https://blog.csdn.net/weixin_44290138/article/details/104226784