110
社区成员
要求:把一个数分解成任意几个数的和,并把所有的可能性都列出来。
package com.xxm.task4;
import java.util.Scanner;
//要求:录入一个整数,输出其和式的所有可能性
public class FenJie {
//第一步,定义工具数组,用于存放数据 //本来写在上面,但是个声明应该在主方法中完成,从逻辑上来说,它是第一步
static int arr[] = new int[99999]; //定义工具数组,以用来存放数据。
static Scanner sc = new Scanner(System.in);
static int number;
//第二步,主方法,录入数据
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
number = sc.nextInt();
fenJie(number, 1, 0); //初始条件要设成1和0
}
//第三步,直接定义和数分解的方法。
private static void fenJie(int num, int a, int b) {
/*
3个变量的含义:
num:待分解的数字(在最外层迭代,num就是录入的数字)
a : 计数器,没有用i是因为等会的for循环中要用到i
b : num数字的一个加数
*/
if (num > 0) {
for (int i = a; i <= num; i++) { //循环条件,i初始为a,意为分解的第一个和数为a(初始时a=0)
arr[b] = i; //存放和数
fenJie(num - i, i, b + 1); //递归。
// 语句的作用是:在num分解为i与(num-i)的和之后,把(num-i)作为下一次迭代的待分解数据使用。
}
return;
}
//至此,递归构造完毕,接下来是打印和数。
System.out.print(number + "=" + arr[0]);
for (int i = 1; i < b; i++) {
System.out.print("+" + arr[i]);
}
System.out.println(); //换行,以输出下一组和数。
}
}
张伟在超市买了一瓶快乐水和一些吃的,使用支付 APP 完成支付后,过了几秒,
APP 通知他已经支付成功。
代码如下:
package com.xxm.task4;
/*
要求:张伟在超市买了一瓶快乐水和一些吃的,使用支付 APP 完成支付后,过了几秒,APP 通知他已经支付成功
思路:1、用一个函数表示付款动作,当付款动作完成时,返回一个布尔值
2、用一个函数表示APP的提示动作,当接收到付款函数返回的布尔值时,延迟1秒打印相关的提示信息
*/
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
public class Quest2_5_Callback_Shopping {
//主方法,调用payCheck方法
public static void main(String[] args) {
System.out.println("支付成功请按1");
notice(payCheck());
}
//第一步,写付款动作函数
public static boolean payCheck() {
Scanner sc = new Scanner(System.in);
int paidOrNot = sc.nextInt();
if (paidOrNot == 1) {
return true;
} else {
return false;
}
}
//第二步,延迟函数
public static void notice(boolean paidOrNot) {
Timer timer = new Timer();
if (!paidOrNot) {
timer.schedule(new TimerTask() {
public void run() {
System.out.println("支付失败,请重试");
}
}
, 1000);
notice(payCheck());
} else {
timer.schedule(new TimerTask() {
public void run() {
System.out.println("支付成功,谢谢惠顾");
timer.cancel();
}
}, 1000);
}
}
}
李雷周一在某某宝 APP 上买了两张周五晚上的电影票。在周五晚上电影即将放映的前一小时,APP 给他发来了观影通知。
代码如下,其中,为了测试方便,代码中的时间设置的是写完代码后的1分钟,并且测试成功。:
package com.xxm.task4;
/*
李雷周一在某某宝 APP 上买了两张周五晚上的电影票。在周五晚上电影即将放映
的前一小时,APP 给他发来了观影通知
*/
/*
思路:
1、通知方法
2、在特定时间调用通知方法
*/
import java.util.Calendar;
import java.util.Date;
import java.util.TimerTask;
import java.util.Timer;
public class Quest2_6_Callback_Movie {
public static void main(String[] args) {
Timer timer = new Timer();
Calendar time = Calendar.getInstance();
time.set(2021, Calendar.SEPTEMBER, 28, 19, 04);
Date date = new Date();
date = time.getTime();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("您的电影还有1个小时开场");
timer.cancel();
}
}, date);
}
}
在代码中设定的时间(2021.9.28.19:04),输出了目标语句。
这是几个任务里最简单的,没什么好说的,代码如下。
package com.xxm.task4;
import java.util.Timer;
import java.util.TimerTask;
/*
韩梅梅周末在家休息,她把衣服丢到洗衣机里之后就去扫地、做饭去了,过了一会,
洗衣机就「嘀~嘀~」响几声通知她衣服已经洗好了
*/
public class Quest_2_7_WashingMachine {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask(){
public void run(){
System.out.println("嘀~嘀~");
timer.cancel();
}
},1000*60*20);
}
}
代码中设置的时间是20分钟。为了测试方便,测试的时候将时间改成了1秒,成功输出。
在 JavaScript 中以下,以下哪些变量名是非法的(会导致程序报错)?
答:1person会报错,数字开头。
var会报错,var是关键字
在 JavaScript 中,以下哪些变量名不建议使用?
答:1person和var不能用,上题已经说了。
$orderwera23和uiuiuqwer4_23aser2不建议使用,因为不能直观看出变量的含义。
要想以下 JavaScript 代码符合预期,空格处应该填什么 运算符?
答:输出大数,填!。
要想以下 JavaScript 代码符合预期,空格处应该填什么?
答: ==
网上看到的解释都非常的绕口、晦涩。
其实回调大概就是,一个函数被当做另一个函数的参数使用,那么这个函数就可以叫做回调函数。
步骤:
1、构造一个小顶堆,用比较各二叉树的方法(如果子节点数据比父节点小,就交换他们的位置,使父节点位置的数据是大者),使堆顶数字为最小值,然后将其取出。
2、再将剩下的数字构造成小顶堆,取出最小数字。
3、重复,直到取出所有数。这样就完成了升序的堆排序。降序同理,换成大顶堆即可。
在这一段话中 Timer timer = new Timer();
创建一个计时器。
java.util.Timer;
schedule()
用法1:timer.schedule(TimerTask task,long delay)
参数:TimerTask是一个类,等会讲。
delay是延迟,单位为毫秒。
这种用法作用是:在delay延迟后,执行task。
用法2:timer.schedule(TimerTask, Date time)
作用:在指定时间time,执行task任务。如果time是过去的时间,那么该任务立即执行。
cancel()
如果调用者想要快速终止计时器的任务执行线程,则调用者应该调用计时器的cancel
方法。timer.cancel;
创建一个计时器任务。
java.util.TimerTask;
cancel()
终止该任务。
run()
该任务要执行的操作。
import java.util.Timer;
import java.util.TimerTask;
public class Demo1 {
public static void main(String args[]){
timer.schedule(new TimerTask{
public void run(){
System.out.println("HelloWorld!");
}
}
,1000);
}
}
这段代码的功能为:在1000毫秒后,打印HelloWorld!至控制台。
表示特定的时刻,精度为毫秒。
import java.util.Date;
当使用Date date = new Date();声明变量时,date记录的是当前时间。
toString();
将此Date对象转化为一定格式的字符串。
例如sout(date.toString());可以将date所对应的时间打印出来。
可以指定时间,可以获取日期数据的特定部分,比如小时,日。 或者在日期的这些部分加上或者减去值呢。功能比Date强大很多。
特别注意:Calendar是一个抽象类,无法直接new一个对象。
必须通过getInstance()方法来创建。如:Canlendar c = CanlendargetInstance();
import java.util.Date;
getInstance()
作用:获取当前时间。
set
作用:将对象设定为特定时间。
如:c.set(2021,9,28),即将c对象的时间设置为2021年9月28日。
add
作用:在对象的时间上增加一段时间。
例如:c.add(Calendar.DATE,10);就是在c对象的时间上加10天。同理,可以是负数,表示减10天。
getTime方法。
如:date = c.getTime();
setTime方法。
如:c.setTime(date);
var
//
1、通过算法可视化网站工具,熟练掌握顺序查找、二分查找、插值查找这三种查找算法,理解分块查找、哈希查找这两种查找算法
2、用至少三种排序方法完成对数组[0,9,12,1,6,3,7,11]的排序
3、解释数据结构中堆和栈的区别
4、a=1,b=2,使用至少三种方法交换变量 a 和 b 的值
5、使用 for 循环求出 0~300 之间的奇数之和