重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你把天数加上1的上面那一行代码注释取消掉改成 System.out.println(sdf.format(tmp)); 就行了啊....
创新互联建站长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为良庆企业提供专业的网站设计、成都网站制作,良庆网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
你要显示每一天 那肯定得把打印代码写在循环里面呀 或者在循环里面把每一天都拼接在一起 最后return ,你目前把循环输出给注释掉了,然后又只return了最后一天的字符串回去 那当然只打印最后一天。
你要不就把那行代码取消了 ,要不就先声明一个String用来接收循环拼接完的日期最后return回去
代码是从上到下运行的
一、前面的x已经被赋值为整型了,数据类型只要赋值一次就行了,所以后面的x都不用赋值了;
二、while(x!=password){
System.out.println("pleas input the password");
x=sc.nextInt();
}
判断条件是 x != password,只要输入的数据不等于password,也就是20030708,就会一直进入while循环,直到password正确才不进入,然后输出correct,结束程序;
三、代码是从上至下运行的,Scanner sc=new Scanner(System.in)一定是要在int x=sc.nextInt()前面的,因为要先新建一个Scanner类,后面才能引用;
System.out.println("pleas input the password")意思输出到控制台,所以顺序放哪都行,只是它输出pleas input the password,提醒你下一步要输入密码,放在int x=sc.nextInt()前面起到提醒你输入的作用;
x = sc.nexInt(),接收键盘输入赋值给x,然后回到while循环的判断条件x != password ,如果输入的不等于20030708,就再重新接收键盘输入,然后重新赋值给x,一直循环,直到x等于20030708才不循环了;
Scanner是Java中接收键盘输入的一个类;
sc.nextInt, sc 是你新建Scanner类的实例;nextInt是Scanner中的一个方法,意思接收下个输入的Int类型数据;sc.nextInt意思是sc这个实例调用nextInt这个方法
一趟快速怕序的具体做法是:附设两个指针low和high,他们的初值分别为low和high,设枢轴记录的关键字为privotkey,则首先从high所指位置向前搜索找到第一个关键字小于pivotkey的记录和枢轴记录互相交换,然后从low所指向的位置起向后搜索,找到第一个关键字大于privotkey的记录和枢轴记录互相交换,重复这两步直至low==high位置.
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class 快速排序_1 {
public static void main(String[] args) throws InterruptedException {
int test[] = {15,23,56,7,13,52,20,7};
new 快速排序_1().qSort(test, 0, test.length-1);
for(int k:test) System.out.println(k);
}
public void qSort(int []array,int low,int high){
if(low
int privot=partition(array,low,high);
qSort(array,low,privot-1);
qSort(array,privot+1,high);
}
}
public int partition(int [] array,int low,int high){
/**
* 选择 low位置 作为曲轴(支点)
*/
int pivot=array[low];
int temp=0;
/**
* 如果 low
*/
while(low
/**
* 先从 high端 开始判断
*/
while(low=pivot) high--;
/**
* 进行 置换操作
*/
if(low
array[low]=array[high];
low++;
}
/**
* 从 low 端判断
*/
while(low
/**
* 进行 置换操作
*/
if(low
array[high]=array[low];
high--;
}
}
array[low]=pivot;
return low;
}
}
首先理解下题意,关键是连续的子数组,比如{1,2,-1} ,连续的子数组包括{1}、{2}、{-1}、{1,2}、{2,-1}、{1,2,-1}
其次是求各子数组和的最大值,上面的算法求最大值分两部分,循环遍历所有值
curSum :用于某一个子数组的累加和
curMaxSum:用于记录历史最大累加和
上面算法的start和end其实没用,本意是找出具体子数组,但上面算法部分情况下是无法实现的
@Test
public void test(){
// int[] num = {1,-2,3,10,-4,7,2,-5};
//int[] num = {1,-2,3,10,-4,10,2,-5};
int[] num = {-1,-2,3,4,-5,-6,-7};
System.out.println(maxSum(num));
}
public int maxSum(int[] num){
int curSum = 0;
int curMaxSum = -99999999;
int finalStart = 0;
int finalEnd = 0;
int start = 0;
for(int i=0;inum.length;i++){
if(curSum=0){
curSum = num[i];
start = i;
}
else{
curSum += num[i];
}
if(curSumcurMaxSum){
finalStart = start;
finalEnd = i;
curMaxSum = curSum;
}
}
for(int i = finalStart;i=finalEnd;i++){
System.out.println(num[i]);
}
return curMaxSum;
}