java程序设计基础篇 复习笔记 第三单元

时间:2023-02-08 22:16:09
1
单向if语句
双向if语句
dangling else
switch:char,byte,short,int
2
javax.swing.JOptionPane.showConfirmDialog(null,text);
返回值:
JOptionPane.YES_OPTION:0
JOptionPane.NO_OPTION:1
JOptionPane.CANCEL_OPTION:2
3
cannot cast int from boolean
cannot cast boolean from int
4
%b
5
printf("%f",2);
java.util.IllegalFormatConversionException
6
java基本是值传参,基本类型不可改,需要Integer,Double打包,
Field f = r1.getClass().getDeclaredField("value");
f.setAccessible(true);
f.setDouble(r1.r1+1);
同时不能使用拷贝构造函数

	public static boolean calEquRoot(double a,double b,double c,Double r1,Double r2) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
		double delta = a * a - 4 * b * c;
		if(delta < 0)return false;
		delta=Math.sqrt(delta);
		Field f=r1.getClass().getDeclaredField("value");
		//r1=Double.valueof(1.0);r2=Double.valueof(2.0);
		f.setAccessible(true);
		f.setDouble(r1,Double.valueOf((-b+delta)/2/a));
		f.setDouble(r2,Double.valueOf((-b-delta)/2/a));
		return true;
	}

String类型为不可变字符串,传入也不改变其值


Keyword:
Boolean expression
Boolean value
boolean type
break statement
conditional operator
dangling-else ambiguity
fall-through behavior:语句从匹配处开始执行,直到遇到break语句或是达到switch语句的末端。
operator associativity
operator precedence
selection statement
short-circuit evaluation

3.1
< <= >= != == >
3.2
cannot cast 
3.3
30 is even
30 is odd
________________
30 is even
3.4
z is 5
________________
z is 7
________________
x is 2
3.5
a==c==d
缩进正确:b,c
3.6
.............
3.7
等价
3.8
0.5,0.0,0.234
3.9
Math.random()*20;
Math.random()*10+10;
Math.random()*40+10;
3.10
if(y > 0)x=1;
3.11
if(score > 90)pay+=1.03;

if(score > 90)pay+=1.03;
else pay*=1.01;
3.12
if (score >= 90.0)grade = 'A';
else if (score >= 80.0)grade = 'B';
else if (score >= 70.0)grade = 'C';
else if (score >= 60.0)grade = 'D';
else grade = 'F';
3.13
boolean fl = count % 10 == 0;
if (fl)newLine = true;
else newLine = false;
3.14
false,false,true,true,true,true,
3.15
x >= 1 && x <= 100
3.16
(x >= 1 && x <= 100) || x<0
3.17
x = y && y
x /= y
(x != 0) || (x = 0)
3.18
2
2
3.19
true,false,true,false
3.20
(x < y && y < z) is true
(x < y || y < z) is true
!(x < y) is false
(x + y < z) is false
(x + y < z) is false
3.21
age > 13 && age < 18
3.22
weight > 50 || height > 160
3.23
weight > 50 && height > 160
3.24
weight > 50 ^ height > 160
3.25
char,byte,int,long
下一个标签内的语句
可以
可能不行
格式紧凑,可读性好
3.26
2
3.27
switch(a){
case 1:
	x+=5;
	break;
case 2:
	x+=10;
	break;

case 3:
	x+=16;
	break;

case 4:
	x+=34;
}
3.28
switch(day){
case 0:
	dayName = "Sunday";
	break;
case 1:
	dayName = "Monday";
	break;
case 2:
	dayName = "Tuesday";
	break;
case 3:
	dayName = "Wednesday";
	break;
case 4:
	dayName = "Thursday";
	break;
case 5:
	dayName = "Friday";
	break;
case 6:
	dayName = "Saturday";
	break;
}
3.29
System.out.print(count + count % 10 ==0?"\n":" ");
3.30
pay*=(temperature > 90?1.5:1.1);
3.31
%b %c %d %f %s
3.32
变参个数多
变参个数少
java.util.IllegalFormatConversionException 
3.33
amount is 32.32 3.232000e+01
amount is 32.3200 3.2320e+01
false 
Java  
 falseJava
false Java   
3.35
true
true
3.36
假,赋值运算符(简捷运算符/=...)
3.37
false
false
3.38
yes,yes,yes
3.39
javax.swing.JOptionPane.showConfirmDialog(null,confirmMessage);
JOptionPane.YES_OPTION:0
JOptionPane.NO_OPTION:1
JOptionPane.CANCEL_OPTION:2


3.1
import java.lang.reflect.Field;
import java.util.Scanner;
import java.text.*;

public class Exercise {
	public static int calEquRoot(double a,double b,double c,Double r1,Double r2) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
		
		double delta = b * b - 4 * a * c;
		if(delta < 0)return -1;
		delta=Math.sqrt(delta);
		Field f=r1.getClass().getDeclaredField("value");
		f.setAccessible(true);
		f.setDouble(r1,Double.valueOf((-b+delta)/2/a));
		f.setDouble(r2,Double.valueOf((-b-delta)/2/a));
		if(delta < 1e-10)return 0;
		return 1;
	}
	public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
		double a,b,c;
		Double r1 = Double.valueOf(0),r2 = Double.valueOf(0);
		Scanner scanner = new Scanner(System.in);
		System.out.println("Input a:");
		a = scanner.nextDouble();
		System.out.println("Input b:");
		b = scanner.nextDouble();
		System.out.println("Input c:");
		c = scanner.nextDouble();
		int fl=calEquRoot(a,b,c,r1,r2);
		if(fl == 1){
			System.out.println(r1);
			System.out.println(r2);
		}
		else if(fl == 0){
			System.out.println(r1);
		}
		else {
			System.out.println("NO ROOT");
		}
	}
}
3.9
import java.util.Scanner;
public class Exercise {
	public static void main(String[] args) throws Exception{
		Scanner scanner = new Scanner(System.in);
		int[] a = new int[9];
		int ans=0;
		String tmp=scanner.next();
		for(int i=0;i<9;i++){
			a[i]=tmp.charAt(i)-'0';
			ans+=(a[i] * (i + 1)) % 11;
		}
		ans%=11;
		System.out.println(tmp+ans);
	}
}
3.17
import java.util.Scanner;
public class Exercise {
	public static void main(String[] args) throws Exception{
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		int r = (int)Math.random() * 3;
		String[] srp={"scissor","rock","paper"};
		String[] result={"You won","You lose","It is a draw"};
		System.out.print("scissor(0), rock(1), paper(2): ");
		int a;
		while((a=scanner.nextInt())<=2 && a>=0){
			System.out.print("The computer is "+srp[r]+". You are "+srp[a]+(a==r?" too. ":". ")
					+ (a==r?result[2]:(a-r==1||a-r==-2)?result[0]:result[1]));
		}
	}
}
3.20
import java.util.Scanner;
public class Exercise {
	public static void main(String[] args) throws Exception{
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		System.out.print("Enter the temperature in Fahrenheit: ");
		double ta;
		while((ta=scanner.nextDouble()) < -58||ta > 41){
			System.out.print("Enter the temperature in Fahrenheit bewteen -58 and 41: ");
		}
		double v;
		System.out.print("Enter the wind speed miles per hour: ");
		while((v=scanner.nextDouble()) < 2){
			System.out.print("Enter the wind speed miles per hour above 2 miles/h: ");
		}
		double ans=35.74 + 0.6215 * ta - 35.75 * Math.pow(v, 0.16) + 0.4275 * ta * Math.pow(v, 0.16);
		System.out.println("The wind chill index is "+ans);
	}
}
3.21
import java.util.Scanner;
public class Exercise {
	/**
	 * 泽勒一致性
	 * */
	public static void main(String[] args) throws Exception{
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		int year,month,day,week;
		System.out.print("Enter year: ");
		year = scanner.nextInt();
		System.out.print("Enter month: ");
		month = scanner.nextInt();
		if(month < 3)month+=12;
		System.out.print("Enter the day of the month: ");
		day = scanner.nextInt();
		String[] date = {
				"Saturday","Sunday",
				"Monday","Tuesday","Wednesday",
				"Thursday","Friday"
		};
		week = (day + 26*(month + 1)/10 + year % 100 + year % 100 / 4 + year/400 + year/100*5)%7;
		System.out.println("Day of the week is " + date[week]);
	}
}
3.22
import java.util.Scanner;
public class Exercise {
	public static void main(String[] args) throws Exception{
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		double x,y;
		System.out.print("Enter a point with two coordinates: ");
		x = scanner.nextDouble();
		y = scanner.nextDouble();
		if(x * x + y * y <= 100){
			System.out.println("Point ("+x+", "+y+") is in the circle");
		}
		else {
			System.out.println("Point ("+x+", "+y+") is not in the circle");
		}
	}
}
3.27
import java.util.Scanner;
public class Exercise {
	final static double eps=1e-16;
	public static boolean judge(double a,double b,double x,double y){
		if(Math.abs(a - b) < eps && a < eps ){
			if(Math.abs(x - y) < eps && x < eps){
				return true;
			}
			else return false;
		}
		else{
			boolean fl = a * b < 0;
			boolean fl2 = (b * x + a * y - a * b) > 0;
			if(fl^fl2){
				return false;
			}
			else return true;
		}
	}
	public static void main(String[] args) throws Exception{
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		double x,y;
		System.out.print("Enter a point with two coordinates: ");
		x = scanner.nextDouble();
		y = scanner.nextDouble();
		if(judge(200,100,x,y)){
			System.out.println("Point ("+x+", "+y+") is in the circle");
		}
		else {
			System.out.println("Point ("+x+", "+y+") is not in the circle");
		}
	}
}
3.28
import java.util.Scanner;
public class Exercise {
	final static double eps=1e-16;
	public static int judge(double[] w,double[] h,double[] x,double[] y){
		w[0]/=2;w[1]/=2;h[0]/=2;h[1]/=2;
		double dx = Math.abs(x[0] - x[1]);		
		double dy = Math.abs(y[0] - y[1]);
		if(dx > w[0] + w[1]||dy > h[0] + h[1])return 0;
		if(dx > w[0]||dy > h[0])return 2;
		return 1;
	}
	public static void main(String[] args) throws Exception{
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		double[] x = new double [2],y = new double [2],w = new double [2],h = new double [2];
		System.out.println("Enter r1's center x-, y-coordinates, width, and height: ");
		x[0] = scanner.nextDouble();
		y[0] = scanner.nextDouble();		
		w[0] = scanner.nextDouble();
		h[0] = scanner.nextDouble();
		System.out.println("Enter r2's center x-, y-coordinates, width, and height: ");
		x[1] = scanner.nextDouble();
		y[1] = scanner.nextDouble();		
		w[1] = scanner.nextDouble();
		h[1] = scanner.nextDouble();
		int fl;
		if((fl = judge(w,h,x,y)) == 0){
			System.out.println("r2 does not overlap r1");
		}
		else if(fl == 1){
			System.out.println("r2 is inside r1");
		}
		else {
			System.out.println("r2 overlaps r1");
		}
	}
}