uhilwkmcdt 发表于 2016-6-6 07:29:05

华为2013机试题

  华为2013年在长沙的一个机试题是判断润年。年份要求是四位数。
  输入样例:
  2012
  2122
  afdsfa
  22.33
  输出样例:
  YES
  NO
  ERROR
  
  我的答案是:
  

package cn.william;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
/**
* 华为2013年机试题:求润年
* @author william
*
*/
public class Test extends JFrame{
private JLabel lable;
private JTextField field;
public static void main(String[] args){
Test frame = new Test();
frame.init();
}
public void init(){
this.setSize(400, 250);
this.setLayout(null);
lable = new JLabel("请输入年份:");
field = new JTextField();
lable.setBounds(140, 90, 120, 30);
field.setBounds(140, 120,120, 30);
this.add(field);
this.add(lable);
this.setVisible(true);
field.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String year = field.getText().toString();
if(year.length() != 4){
System.out.println("ERROR");
return;
}
int y = 0;
try{
y = Integer.parseInt(year);
}catch(Exception ex){
System.out.println("ERROR");
return;
}

check(y);
}
});
}
private void check(int year){
if(year == 0){
System.out.println("ERROR");
return;
}
if(year % 100 == 0){
if(year % 400 == 0){
System.out.println("YES");
}else{
System.out.println("NO");
}
}else{
if(year % 4 == 0){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
}

  
  
  顺便复习一下java异常的知识。
  异常定义:能让程序意外中断运行的指令流。
  java异常类的结构如下

  Throwable包括了一切的异常。ERROR是JVM的异常,不可以用我们的代码处理。Exception是我们程序中可能出现的异常,可以处理。
  RuntimeException和Exception的关系:
  RuntimeException继承自Exception,RuntimeException和它的子类可以不用try catch进行处理。
  

ry{
y = Integer.parseInt(year);
}catch(Exception ex){
System.out.println("ERROR");
return;
}
  
  其实这里 Integer.parseInt(year) 可能会抛出NumberFormatException的,但是eclipse并没有提示这句代码需要处理异常,因为NumberFormatException是RuntimeException的子类。
  当然因为RuntimeException是Exception的子类,所以,也可以用try catch来处理。
页: [1]
查看完整版本: 华为2013机试题