可以使用下面的公式求一元二次方程:
b^2-4ac称作一元二次方程的判别式。如果它是正值,那么一元二次方程就有两个实数根。如 果它为0, 方程式就只有一个根。如果它是负值,方程式无实根。
编写程序,提示用户输入 a,b 和c的值,并且显示基于判别式的结果。如果这个判别式为正,显示两个根。如果判别式为 0, 显示一个根。否则,显示 “该 方程式无实数根”。
面是一些运行示例:
Enter a, b, c:1.0 3 1
The equation has two roots -0.381966 and -2.61803
Enter a, b, c:1 2.0 1
The equation has one root -1
Enter a, b, c:1 2 3
The equation has no real roots
解题思路:
题中的数据——一元二次方程的系数
题目要求——根据公式求方程的解,并根据不同的情况,给出合适的输出
步骤:
1.输入方程的系数
2.计算根的判别式
3.判断方程有几个解
4.有几个解就输出几个解
代码:
import java.util.Scanner;
class Test01
{
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
System.out.print("请输入a,b,c:");
double a=scanner.nextDouble();//系数a
double b=scanner.nextDouble();//系数b
double c=scanner.nextDouble();//系数c
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("无实数解!");
}
}
}
编写一个程序,提示用户输入代表今天日期的数字(周天 为 0, 周一为 1,……, 周六为 6 )。同时,提示用户输入一个今天之后的天数,作为代表将来某天的数字,然后显示这 天是星期几。
下面是运行示例:
Enter today is day:1
Enter the number of days elapsed since today: 3
Today is Monday and the future day is Thursday
Enter today is day: 0
Enter the number of days elapsed since today: 31
Today is Sunday and the future day is Wednesday
解题思路:
题中的数据——今天日期的数字,将来某天的数字
题目要求——根据输入求将来某天是星期几
步骤:
1.输入今天是周几
2.输入未来的几天
3.打印未来的几天是周几
代码:
import java.util.Scanner;
class Test03
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("今天是周几:");//提示用户输入今天的星期
int today = input.nextInt();//存储今天的星期
System.out.print("未来的几天:");//提示用户输入未来几天的星期
int future = input.nextInt();//存储未来的某天
int futureday= (today + future) % 7;//计算星期的名称
String day = "天一二三四五六";
System.out.println("今天是星期" + day.charAt(today) + ",未来的几天是星期" + day.charAt(futureday));
}
}
注:通过string存储星期的名称,再通过string自带的charAt函数,提取其中的字符,可以在不使用if的情况下轻松判断出日期。
charAt函数:str.charAt(n),提取字符串str的第n个字符。(字符串默认从第0个开始)
编写一个程序,提示用户输入一个三位的整数,然后确定它是否回文数字。当从左到右,以及从右到左都是一样的话,这个数字称为回文数。下面是程序的一个运行示例:
Enter a three-digit integer: 121
121 is a palindrome
Enter a three-digit integer: 123
123 is not a palindrome
解题思路:
题中的数据——用户输入的数字,存储从右往左读的数字
题目要求——判断数字是否是回文数字
步骤:
1.提示用户输入一个三位整数
2.计算该整数的反序数字
3.比较整数与其反序数字的大小
4.根据比较的结果输出该数字是否是回文数字
代码:
import java.util.Scanner;
class Test03
{
public static void mian(String[] args)
{
Scanner scanner=new Scanner(System.in);
System.out.print("输入一个三位的整数:");
int n = input.nextInt(), t = 0;
for(int i = n; i > 0;)
{
t = t * 10 + i % 10;
i /= 10;
}
if(t == n)
{
System.out.println(n + "是回文数字");
}
else
{
System.out.println(n + "不是回文数字");
}
}
}
编写可以玩流行的剪刀-石头-布游戏的程序。 (剪刀可以剪布,石头可以砸剪刀,而布可以包石头。 )程序提示用户随机产生一个数,这个数为 0、1或者 2, 分别表 示石头、剪刀和布。程序提示用户输入值 0、1或者 2, 然后显示一条消息,表明用户和计算机谁贏了游戏,谁输了游戏,或是打成平手。
下面是运行示例:
scissor (0), rock (1), paper (2): 1
The computer is scissor. You are rock. You won
scissor (0), rock (1), paper (2): 2
The computer is paper. You are paper too. It is a draw
解题思路:
题中的数据——电脑随机产生的数字,用户输入的数字
题目要求——计算机随机产生一个整数(0,1,2),判断用户和计算机的输赢
步骤:
1.提示用户输入一个数字
2.计算机随机产生一个数字
3.将两个数字进行对比,分输赢
代码:
import java.util.*;
class Test04
{
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
System.out.print("请输入 剪刀0 石头1 布2:");
int usr=scanner.nextInt();
Random random=new Random();
int com=random.nextInt(3);
String usrStr="";
String comStr="";
switch(usr)
{
case 0: //if usr==0
usrStr="剪刀";
break;
case 1:// if usr==1
usrStr="石头";
break;
case 2:// if usr==2
usrStr="布";
break;
}
switch(com){
case 0:
comStr="剪刀";
break;
case 1:
comStr="石头";
break;
case 2:
comStr="布";
break;
}
if(usr==com){
System.out.printf("用户是%s,电脑是%s,平局",usrStr,comStr);
}else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
System.out.printf("用户是%s,电脑是%s,用户赢",usrStr,comStr);
}else{
System.out.printf("用户是%s,电脑是%s,用户输",usrStr,comStr);
}
}
}
编写程序,提示用户输人一个点(x,y),然后检査这个点是否在以原点(0,0)为圆心、半径为10的圆内。
例如: (4, 5)是圆内的一点,而(9, 9)是圆外的一点。
提示 :如果一个点到(0,0) 的距离小于或等于10, 那么该点就在圆内,计算距离的公式是 。
以下是两个运行示例:
Enter a point with two coordinates: 4 5
Point (4.0, 5.0) is in the circle
Enter a point with two coordinates: 9 9
Point (9.0, 9.0) is not in the circle
解题思路:
题中的数据——圆心坐标,半径,用户输入的点坐标
题目要求——判断点是否在圆内
步骤:
1.提示用户输入点的x,y轴坐标
2.计算到圆心的距离
3.判断点是否在圆内
4.输出判断结果
代码:
class Test05
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("请输入x,y轴坐标:");//提示输入x,y轴坐标
double x = input.nextDouble();//存储x轴坐标
double y = input.nextDouble();//存储y轴坐标
double dis = Math.pow(Math.pow(x,2) + Math.pow(y,2),0.5);//计算点到圆心的距离
if(dis < 10)//判断点与圆的关系
{
System.out.println("点在圆内。");
}
else if(dis >10)
{
System.out.println("点在圆内。");
}
else
{
System.out.println("点在圆上。");
}
}
}