简单分析了一下实际上不难
创新互联公司主要从事成都网站建设、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务温泉,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
最开始的6作为一个循环输入和建立数组的长度就可以
接下来对6组数据作一个简单的分析后很明显有个一个规律
1、将 最后一个数值 作为 计算数值,并且设置一个递归标记 初值为0
2、计算数值+3*(跳坏的次数-标记)= 经过时间
3、若 经过时间60
那么就有:一分钟内的次数=计算数值+(60-经过时间)
4、若 60=经过时间=62
那么说明最后一次跳坏后再等待中时间结束,
那么就有:一分钟内的次数=计算数值
5、若 经过时间62
那么将 计算数值的前一个数 作为 计算数值,并将标记递增1,然后从第2步开始计算
当然可以加一个安全检测
在开始计算某一组数开始之前判断一下,第一个次跳坏前的次数若大于60,不进行计算直接输出60
代码:
import java.util.ArrayList;
import java.util.Scanner;
public class test2 {
public static void main(String [] args){
int size;
Scanner sc = new Scanner(System.in);
size = Integer.parseInt(sc.nextLine()); //输入数据总量
int [] num = new int [size];
for(int i = 0; i size; i++){
String st = sc.nextLine();
num[i] = getNumber(st);
}
for(int a:num)System.out.println(a);
}
public static int getNumber(String st){
String[] as = st.split(" "); //以空格为单位分割字符串
int [] num = new int[as.length];
for(int j = 0; j as.length ;j++)
num[j] = Integer.parseInt(as[j]);//将分割后的字符型数字转换成int型
if(num[0]==0 || num[1]=60)return 60;
int sign = 0;
int elem = num[num.length-1];
int back = -1;
while(true){
int time= elem + 3* (num[0]-sign);
if(time60){
back = elem + (60 - time);
}else if(time62){
sign++;
elem = num[num.length-1-sign];
}else{
back = elem;
}
if(back!=-1)break;
}
return back;
}
}
效果图:
说说servlet里面的方法:
public void ValidateUserPass(String user,String pass){
RequestDispathcher rd =null
//假使你的代码是从DB中获取
DBFactory db=DBFactoryImpl.getDBFactoryInstance();//得到数据库链接
flg=db.findUser(user,pass);
// 这里是不存在用户
if(flg.hasNext()==-1){
// 登录时错误了,一般我们会给用户一个提示
session.setAttirbute("msg","对不起,用户名或密码错误");
RequestDispathcher rd = req.getRequesDispatcher("login.jsp");
rd.forward(request, reponse);//将请求对象和响应对象传递进来
} // 这里是存在当前用户
else{
//当然这里登录成功时,我们要把当前用户写到session里面保存
session.setAttirbute("userName",user);
//这个请求转发语句
request.sendRedirect("index.html");
}
}
// * 上述代码,你可以参考下我的方法,我也很久没做JAVA开发了,我现在从事前端UI开发,本来我想在写一个用struts 2登录的程序的,可我现在忘得差不多了,上面我所用到的属性建议你自己好好的研究一下,往后你将学到struts2 hibernate,Spring等一系列优秀的开源框架,说白了,这些东西的底层还是这些,只不过这些框架做了一些封装隔离。上述代码建议你重点理解一下:请求转发和重定向的区别。
假如有两个frame,分别为frame1,frame2,frame1加个按钮实现跳转.frame1代码如下
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class frame1 extends JFrame implements ActionListener{
/**
* @param args
*/
private JButton jb;
public frame1()
{
this.setSize(300, 200);
this.setLocation(300, 400);
jb=new JButton("跳转");
this.add(jb);
jb.addActionListener(this);//加入事件监听
this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
frame1 frame=new frame1();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb)
{
this.dispose();//点击按钮时frame1销毁,new一个frame2
new frame2();
}
}
}
frame2是个单纯的界面
import javax.swing.JButton;
import javax.swing.JFrame;
public class frame2 extends JFrame{
/**
* @param args
*/
public frame2()
{
this.setSize(300, 200);
this.setLocation(300, 400);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
frame2 frame=new frame2();
}
}
java是可以实现心跳的程序的。
心跳顾名思义就是每隔一段时间执行,或者轮询查询状态,可以使用timer来实现,代码如下:
定时器可以实现
//1000毫秒,固定时间,每隔1秒钟执行一次actionPerformed方法
javax.swing.Timer clock = new javax.swing.Timer(1000,new ActionListener(){
public void actionPerformed(ActionEvent e) {
//执行心跳方法
/**...*/
//调用其他方法
/**...*/
}
});
clock.start();
可以独立用个线程管理,也可以直接写在主线程中
Runtime run = Runtime.getRuntime() ;
try
{
run.exec("explorer ");
//把换成你要的url就行.
} catch (IOException ex)
{
ex.printStackTrace();
}
这个是Windows系统上的做法,换其他系统就不行了,但是只要搞清楚本质就行了。
本质就是开启一个浏览器进程,然后把网址传给它,就能显示网址了,一般采用的是系统的默认浏览器,其他系统的话一般要搞清楚默认浏览器是什么,做好系统的判断,根据不同的系统打开不同的浏览器,才能做到通用性。
你可以在一个类中引入另一个包的类,从而调用其方法或属性,但是一个代码执行块只能有一个main方法!!!,有两个的话就会报错