![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP310MnR0TyklaNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2ETN1EjNwIjMwEjMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
分析
數值: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);
}
}
分析:
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();
}
}
}
分析:
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();
}
}
}
/*
對于列印一些對稱性的三角形圖案或者是類似的問題
盡量向絕對值考慮
*/
分析:
什麼是素數 就是除了1和其本身之外 沒有其他的數字可以整除的
num
2 ~ m ~ num-1 找到一個數字 如果這個數字m num%m==0 num不是素數
如果一個都沒有找到的話 這個數字是素數
class Demo03_17{
public static void main(String[] args){
int count=0; //目前素數的個數
boolean flag=true;
for(int num=2;num<=1000;num++){
for(int m=2;m<=num-1;m++){
if(num%m==0){
flag=false;
break;
}
}
if(flag){
count++;
System.out.print(num+" ");
if(count%8==0){ //8 16 24 32
System.out.println();
}
}
flag=true;
}
}
}
/*
int num=10;
boolean flag=true; //預設這個數字是素數
for(int m=2;m<=num-1;m++){
if(num%m==0){//說明num不是素數
flag=false;//此時不是素數
break;
}
}
//如果for正常執行完畢 都沒有找到 是素數
// System.out.println("是素數");
//重點就在于 for是如何退出的
//如果for是break出來的 -> 不是素數
//如果for是正常執行完畢的->是素數
if(flag){
System.out.println("是素數");
}else{
System.out.println("不是素數");
}
*/
import java.util.Scanner;
class Demo03_18{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("請輸入一個數字:");
int imax=scanner.nextInt();
double sum=0;
double flag=1;
for(int i=1;i<=imax;i++){
//sum+=Math.pow(-1.0,i+1);/(2*i-1);
sum+=flag/(2*i-1);
flag=-flag;
}
double pi=sum*4;
System.out.println(pi);
// 累乘 Math.pow(-1.0,i+1) for -1*-1*-1....
}
}
import java.util.Scanner;
class Demo03_19{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("請輸入一個數字:");
int imax=scanner.nextInt();
double e=1;
double item=1.0;
for(int i=1;i<=imax;i++){
item=item*i; //n!=(n-1)*n;
e+=1/item;
}
System.out.println(e);
}
}
class Demo03_20{
public static void main(String[] args){
int count=0;
for(int i=101;i<=2100;i++){
if(i%4==0&&i%100!=0 || i%400==0){
count++;
System.out.print(i+" ");
if(count%10==0){
System.out.println();
}
}
}
System.out.println("\n閏年一共"+count+"個");
}
}
class Demo03_21{
public static void main(String[] args){
//6 : 1 2 3 4 5 6
//28: 1 2 4 7 14
//n : 1 ~ n/2
int sum=0;
for(int n=2;n<=10000;n++){
for(int i=1;i<=n/2;i++){
if(n%i==0){
sum+=i;
}
}
if(n==sum){
System.out.println("完全數"+n);
}
sum=0;
}
}
}
import java.util.*;
class Demo03_22{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
Random random=new Random();
int usrWin=0;
int comWin=0;
while(true){
System.out.print("請輸入剪刀0 石頭1布2:");
int usr=scanner.nextInt();
int com=random.nextInt(3);
String usrStr = "";
String comStr = "";
switch(usr){
case 0:
usrStr = "scissor";
break;
case 1:
usrStr = "rock";
break;
case 2:
usrStr = "paper";
break;
}
switch(com){
case 0:
comStr = "scissor";
break;
case 1:
comStr = "rock";
break;
case 2:
comStr = "paper";
break;
}
if(usr==com){
System.out.printf("The computer is %s.you are %s too.It is a draw\n",comStr,usrStr);
}else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
System.out.printf("The computer is %s.you are %s.You won\n",comStr,usrStr);
usrWin++;
}else{
System.out.printf("The computer is %s.you are %s.You lost\n",comStr,usrStr);
comWin++;
}
if(usrWin==2||comWin==2){
break;
}
}
if(usrWin==2){
System.out.println("最終玩家赢!");
}else{
System.out.println("最終電腦赢!");
}
}
}
分析:
12/2 6 ~ 0
6/2 3 ~ 0
3/2 1 ~ 1
1/2 0 ~ 1
1100
import java.util.Scanner;
class Demo03_23{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("請輸入一個數字:");
int num=scanner.nextInt();
String binStr="";
while(true){
binStr=num%2+binStr;//"1100"
num/=2;
if(num==0){
break;
}
}
System.out.println(binStr);
}
}
import java.util.Scanner;
class Demo03_24{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int num=0;
int max=0;
int count=0;
System.out.print("請輸入數字:");
while(true){
num=scanner.nextInt();
if(num==0){
break;
}else if(num>max){
max=num;
count=1;
}else if(num==max){
count++;
}
}
System.out.println("max="+max+",count="+count);
}
}