导航:首页 > 编程语言 > java编程大赛题目

java编程大赛题目

发布时间:2022-09-25 07:35:40

‘壹’ java编程的几个简单题目

第一个:
import java.util.Scanner;
import java.util.*;
public class Validate
{
private int n;
/*count_6、count_7、count_8 用来记录收敛那个数字的个数,在这里我记录只要他出现了10次我就认为他收敛与他了
* 还没想到更好的办法,如果不设置这个,就会出现栈溢出,递归不出来了!不过可以看到结果输出结果确实是对的
*/
private int count_6;
private int count_7;
private int count_8;
private Stack<Integer> stack= new Stack<Integer>();//栈用来存放素因子
public void scan()
{
Scanner scan = new Scanner(System.in);
try{
n = scan.nextInt();
}catch(NumberFormatException ne){
System.out.println(ne.getMessage());
}
}

public boolean isPrime(int n)
{
if(n>2 && 0 == n%2)//是大于2偶数
{
return false;

}else{

for(int i=3; i<n; i +=2)
{
if(0 == n%i)
return false;
}
return true;
}
}

public void analyze(int n)
{
if(isPrime(n))
{
stack.push(n);
return;
}
if(0 == n%2){
stack.push(2);
n = n/2;
analyze(n);
}else{

for(int i=3; i<n; i +=2)
{
if(isPrime(i)&& 0 == n%i)
{
stack.push(i);
n = n/i;
analyze(n);
}
}

}
}

public void mySort()
{
check(n);
}
public void check(int m)
{
if(isPrime(m)){
m++;
}
else{
analyze(m);
m = 0;
while(!stack.empty())
{
int k = stack.pop().intValue();
m += k;
}
stack.clear();
m++;
}
if(m == 6 || m == 7 || m == 8)
{
if(6 == m)
{
count_6++;
System.out.println("m = " + m);
}else if(7 == m){
count_7++;
System.out.println("m = " + m);
}else if(8 == m){
count_8++;
System.out.println("m = " + m);
}
}
if(count_6 > 10 || count_7 > 10 || count_8 > 10)
{
return;
}
check(m);
}

public static void main(String[] args)
{
Validate v = new Validate();
v.scan();
v.mySort();
}
}

第二个:
import java.util.Scanner;

class MyException extends Exception
{
public MyException(String msg)
{
super(msg);
}
}

public class MyExceptionTest {

public int scan()
{
int a = 0;
Scanner scan = new Scanner(System.in);
try{
a = scan.nextInt();
}catch(NumberFormatException ne){
System.out.println(ne.getMessage());
}
return a;
}

public int cal(int a, int b) throws MyException
{
if(b==0) throw new MyException("自定义异常: 输入的第二个数为0");
else if(a/b<1) throw new MyException("自定义异常: 相除的结果小于1");
else return a/b;

}
public static void main(String[] args) {

MyExceptionTest me = new MyExceptionTest();
System.out.print("请输入第一个数:");
int a = me.scan();
System.out.print("请输入第二个数:");
int b = me.scan();
try{
System.out.println("相除的结果:" + me.cal(a, b));
}catch(MyException e){
System.out.println(e.getMessage());
}
}

}

第三个:
import java.util.*;
import java.util.Map.Entry;

public class CountCharacter {

private static Map<String, Integer> map = new LinkedHashMap<String, Integer>();

private static final int ONE = 1 ; //没有出现过,则设置其出现一次;

private String content = null;

public void scan()
{
Scanner scan = new Scanner(System.in);
content = scan.nextLine();
}

public void count()
{
String [] text = content.split(" ");
for(int i=0; i<text.length; i++)
{
if (!map.containsKey(text[i])) {
map.put(text[i], ONE);
} else {
int value = map.get(text[i]);
map.put(text[i], value + 1);
}
}
}
public <K, V extends Number> Map<String, V> sortMap(Map<String, V> map) {
class MyMap<M, N> {
private M key;
private N value;
private M getKey() {
return key;
}
private void setKey(M key) {
this.key = key;
}
private N getValue() {
return value;
}
private void setValue(N value) {
this.value = value;
}
}

List<MyMap<String, V>> list = new ArrayList<MyMap<String, V>>();
for (Iterator<String> i = map.keySet().iterator(); i.hasNext(); ) {
MyMap<String, V> my = new MyMap<String, V>();
String key = i.next();
my.setKey(key);
my.setValue(map.get(key));
list.add(my);
}

Collections.sort(list, new Comparator<MyMap<String, V>>() {
public int compare(MyMap<String, V> o1, MyMap<String, V> o2) {
if(o1.getValue().equals(o2.getValue())) {
return o1.getKey().compareTo(o2.getKey());
}else{
return (int)(o2.getValue().doubleValue() - o1.getValue().doubleValue());
}
}
});

Map<String, V> sortMap = new LinkedHashMap<String, V>();
for(int i = 0, k = list.size(); i < k; i++) {
MyMap<String, V> my = list.get(i);
sortMap.put(my.getKey(), my.getValue());
}
return sortMap;
}

public static void main(String[] args) {
CountCharacter cc = new CountCharacter();
cc.scan();
cc.count();
Map<String, Integer> sortMap = cc.sortMap(cc.map);

Iterator<Entry<String, Integer>> it = sortMap.entrySet().iterator();
Map.Entry<String,Integer> entry = null;
int i=0;
while(it.hasNext()&& i<10) {//去前面10个
i++;
entry = (Entry<String,Integer>) it.next();
System.out.println(entry.getKey() + " --> " + entry.getValue());
}
}

}

第四个:
import java.util.Scanner;
public class IntegerShape{
public static void main(String[] args){
double a = 0;
int b = 0;
Scanner in = null;
do{
try{
System.out.print("请输入一个的数:");
in=new Scanner(System.in);
a=in.nextFloat();
break;
}catch(Exception ne){
System.out.println("输入数据错误!");
}
}while(true);
do{
try{
System.out.print("请输入显示的行数:");
in=new Scanner(System.in);
b=in.nextInt();
break;
}catch(Exception ne){
System.out.println("输入数据错误!");
}
}while(true);
for(int i=b;i>0;i--)
{
System.out.println(a);
a=a/2;
}
}
}
第五个:
import java.util.Scanner;
import java.util.Vector;

public class MyVector {

private Vector<String> vectorStr = new Vector<String>(); //用来方单词
private Vector<Integer> vectorInt = new Vector<Integer>();//用来记录对应下标的单词的个数
private static final int ONE = 1 ; //没有出现过,则设置其出现一次;

private String content = null;

public void scan()
{
Scanner scan = new Scanner(System.in);
content = scan.nextLine();
}

public void countWord()
{
int index = -1;
String [] text = content.split(" ");
for(int i=0; i<text.length; i++)
{
if(vectorStr.contains(text[i])){ //若次单词已经存在与vector中则只要修改对应的个数
index = vectorStr.indexOf(text[i]);
int value = vectorInt.get(index)+1;
vectorInt.setElementAt(value, index);
}
else{//若不存在则添加该单词,同时要初始化对应下标的单词的个数
vectorStr.add(text[i]);
vectorInt.add(ONE);
}
}
System.out.println(vectorStr);
}

public void display()
{
for(int i=0; i<vectorStr.size(); i++)
{
System.out.println(vectorStr.get(i) + "->" + vectorInt.get(i));
}
}
public static void main(String[] args) {

MyVector mv = new MyVector();
mv.scan();
mv.countWord();
mv.display();
}
}

最后一个了不容易!考虑加点分吧!

import java.util.*;
public class Exp {

private int integer;
private boolean bool = false;
private Stack<Integer> stack = new Stack<Integer>();

public void scan()
{
System.out.print("输入一个整数:");
Scanner scan = new Scanner(System.in);
while(true){
try{
integer = scan.nextInt();
break;
}catch(Exception e){
System.out.println("输入错误!");
}
}
}

public void operation()
{

for(int i=1; i<integer; i++)
{
int sum = 0;
for(int j = i; j<=integer; j++)
{
stack.push(j);
sum += j;
if(sum == integer)
{
int k = 0, n = stack.size();
bool = true;
System.out.print(integer + " = ");
while(!stack.empty())
{
k++;
if(k<n)
{
System.out.print(stack.pop().intValue() + " + ");
}
else
{
System.out.print(stack.pop().intValue() + "\n");
}
}
stack.clear();
}else if(sum > integer){
stack.clear();
}
}
}
if(!bool)
System.out.println("该整数没有连续正整数序列!");
}
public static void main(String[] args) {
Exp e = new Exp();
e.scan();
e.operation();
}

}

以上运行过了可以!

‘贰’ Java编程题,求解

// 上源码

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {

/**
* 数字键 0-9键 *键 #键
*/
private static String[][] digits = new String[][]{
// 0
{},
// 1
{},
// 2
{"A", "B", "C"},
// 3
{"D", "E", "F"},
// 4
{"G", "H", "I"},
// 5
{"J", "K", "L"},
// 6
{"M", "N", "O"},
// 7
{"P", "Q", "R", "S"},
// 8
{"T", "U", "V"},
// 9
{"W", "X", "Y", "Z"},
// *
{},
// #
{},
};

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inputs;
String[] arr;
System.out.print("请输入按键数字(多个数字空格隔开):");

while (null != (inputs = scanner.nextLine())) {
if ("exit".equalsIgnoreCase(inputs) || "quit".equalsIgnoreCase(inputs)) {
System.out.println("退出程序");
System.exit(1);
}
// 检查args输入参数是否合法
if (checkInput(inputs.split(" "))) {
arr = inputs.trim().split(" ");
// 查找输入键的所有字母组合
List<String[]> inputCharList = new ArrayList<>();
for (String digit : arr) {
// *#01没有字母
if ("*#01".indexOf(digit) >= 0) {
continue;
}
inputCharList.add(digits[Integer.parseInt(digit)]);
}

if (!inputCharList.isEmpty()) {
combineChars("", inputCharList);
System.out.println();
} else {
System.out.println("输入的数字没有字母组合。");
}
} else {
System.out.println("按键输入不正确,请输入0-9 * #键。");
}

System.out.print("请输入按键数字(多个数字空格隔开):");
}
}

/**
* 递归查找所有字母组合
* @param headerChar
* @param inputCharList
*/
private static void combineChars(String headerChar, List<String[]> inputCharList) {
if (inputCharList.size() == 1) {
for (String ch : inputCharList.get(0)) {
System.out.print(headerChar + ch + " ");
}
} else {
for (String ch : inputCharList.get(0)) {
combineChars(headerChar + ch, inputCharList.subList(1, inputCharList.size()));
}
}
}

/**
* 校验输入是否合法
*
* @param args
* @return
*/
static boolean checkInput(String[] args) {
String validInputs = "0123456789*#";
boolean isValid = true;

for (String arg : args) {
if (arg.length() != 1 || validInputs.indexOf(arg) < 0) {
isValid = false;
break;
}
}

return isValid;
}

}


运行效果

题目里只说了输入两个数字的情况,输入* # 1 0这里我直接视为无效输入了(忽略掉了),对于输入超过两个数字以上的情况也能按要求输出。(考虑到输入的数字个数不确定因素,这里用到了递归,如果确定只有1或2个数字输入,代码会简介很多,也不需要递归)

‘叁’ Java的编程题目,在线等,急急急

先做两个比较简单的先用:
import java.util.Arrays;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Function {
/**
* 设计一个方法,完成字符串的解析。方法定义为:public void myParseString(String inputStr);
* 对于给定的字符串,取得字符串内的各个整数(不考虑小数,),然后将取得的数排序,按从小到大依次打印出来。
* @param args
*/
public static void main(String[] args) {
String s = "aa789bB22cc345dd;5.a";
new Function().myParseString(s);
}
public void myParseString(String inputStr){
String mathregix="\\d+";//数字
Vector vector=new Vector();
Pattern fun=Pattern.compile(mathregix);
Matcher match = fun.matcher(inputStr);
while (match.find()) {
vector.add(match.group(0));
}
Object[] obj=vector.toArray();
int[] result=new int[obj.length];

for (int i = 0; i < obj.length; i++) {
result[i]=Integer.parseInt((String) obj[i]);
}
Arrays.sort(result);
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
}

import java.util.Date;
/**
* 有一个学生类(Student),其有四个私有属性,分别为:
* 学号no,字符串型;
* 姓名name,字符串型;
* 年龄age,整型;
* 生日birthday,日期型;
* 请:
* 1) 按上面描述设计类;
* 2) 定义对每个属性进行取值,赋值的方法;
* 3) 要求学号不能为空,则学号的长度不能少于5位字符,否则抛异常;
* 4) 年龄范围必须在[1,500]之间,否则抛出异常;
*/
public class Student {
private String no;
private String name;
private int age;
private Date birthday;
public int getAge() {
return age;
}
public void setAge(int age) throws Exception {
if(age<1||age<500)throw new Exception("年龄不合法。");
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNo() {
return no;
}
public void setNo(String no) throws Exception {
if(no==null)throw new Exception("学号不能为空!");
if(no.length()<5)throw new Exception("学号不能少于五位!");
this.no = no;
}
}

二、三题
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

/**
* 2. 设计一个GUI界面,要求打界面如下:
*点击文件->打开,打开文件选择器,选择打开给定的java.txt文件,将文件内所有a-z,A-Z之间的字符显示在界面的文本区域内。
* 3. 设置一个GUI界面,界面如下:
* 点击文件->保存,打开文件选择窗体,选择一个保存路径,将本界面文本区域内输入的内容进行过滤,将所有非a-z,A-Z之间的字符保存到C盘下的java.txt文件内。
* Java.txt文件内容如下:
* 我们在2009年第2学期学习Java Programming Design,于2009-6-16考试。
*
*
*
*/
public class FileEditer extends javax.swing.JFrame implements ActionListener {
private JMenuBar menubar;
private JMenu file;
private JMenuItem open;
private JTextArea area;
private JMenuItem save;
private JFileChooser jfc;

/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
FileEditer inst = new FileEditer();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}

public FileEditer() {
super();
initGUI();
}

private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
area = new JTextArea();
getContentPane().add(area, BorderLayout.CENTER);
area.setText("文本区");
}
{
menubar = new JMenuBar();
setJMenuBar(menubar);
{
file = new JMenu();
menubar.add(file);
file.setText("文件");
file.setPreferredSize(new java.awt.Dimension(66, 21));
{
open = new JMenuItem();
file.add(open);
open.setText("打开");
open.setBorderPainted(false);
open.setActionCommand("open");
open.addActionListener(this);
}
{
save = new JMenuItem();
file.add(save);
save.setActionCommand("save");
save.setText("保存");
save.addActionListener(this);
}
}
}
{
jfc=new JFileChooser();
}
pack();
setSize(400, 300);
} catch (Exception e) {
e.printStackTrace();
}
}

public void actionPerformed(ActionEvent e) {
if("open".equals(e.getActionCommand())){
int result=jfc.showOpenDialog(this);
if(result==jfc.APPROVE_OPTION){
File file=jfc.getSelectedFile();
try {
byte[] b=new byte[1024];
FileInputStream fis=new FileInputStream(file);
fis.read(b);
fis.close();
String string=new String(b,"GBK");
string=string.replaceAll("[^a-zA-Z]*", "");
area.setText(string.trim());
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException es) {
// TODO Auto-generated catch block
es.printStackTrace();
}

}
}else if("save".equals(e.getActionCommand())){
int result=jfc.showSaveDialog(this);
if(result!=jfc.APPROVE_OPTION)return;
File file=jfc.getSelectedFile();
try {
if(!file.exists()){
file.createNewFile();
}
String string = area.getText();
string=string.replaceAll("[a-zA-Z]*", "");
byte[] b=string.getBytes();
FileOutputStream fis=new FileOutputStream(file);
fis.write(b);
fis.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException es) {
// TODO Auto-generated catch block
es.printStackTrace();
}

}
}

}

‘肆’ 求这个Java编程题

程序把通过循环把数组逆序,输出7 6 5 4 3 2 1
写结果的题目,可以粘贴到电脑里面执行一下

‘伍’ Java编程常见面试题目,要求正确答案

第一,谈谈final, finally, finalize的区别。

final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.ASP?id=704&page=1

注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象

第四,&和&&的区别。

&是位运算符。&&是布尔逻辑运算符。

第五,HashMap和Hashtable的区别。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

第六,Collection 和 Collections的区别。

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。

第七,什么时候用assert。

断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:

assert(a > 0); // throws an AssertionError if a <= 0

断言可以有两种形式:

assert Expression1 ;
assert Expression1 : Expression2 ;

Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:

Javac -source 1.4 Test.java

要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

第八,GC是什么? 为什么要有GC? (基础)。

GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:

System.gc()
Runtime.getRuntime().gc()

第九,String s = new String("xyz");创建了几个String Object?

两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

第十,Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

第十三,Java有没有goto?

Goto?java中的保留字,现在没有在java中使用。

第十四,数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。
String有有length()这个方法。

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

第十七,给我一个你最常见到的runtime exception。

ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, , DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException

第十八,error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

第十九,List, Set, Map是否继承自Collection接口?

List,Set是

Map不是。

第二十,abstract class和interface有什么区别?

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

都不能

第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。

第二十三,启动一个线程是用run()还是start()?

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

第二十四,构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

第二十五,是否可以继承String类?

String类是final类故不可以继承。

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

不能,一个对象的一个synchronized方法只能由一个线程访问。

第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

会执行,在return前执行。

第二十八,编程题: 用最有效率的方法算出2乘以8等于几?

有C背景的程序员特别喜欢问这种问题。

2 << 3

第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

不对,有相同的hash code。

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

第三十二,编程题: 写一个Singleton出来。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

一般Singleton模式通常有几种种形式:

第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}

第二种形式:

public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}

其他形式:

定义一个类,它的构造函数为private的,所有方法为static的。

一般认为第一种形式要更加安全些

第三十三 Hashtable和HashMap

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许

还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

‘陆’ javab编程题目求大神帮忙解答一下,谢谢!

编写电池类(Cell):具有品牌属性,可以续电


publicclassCell{

privateStringbrand;

publicStringgetBrand(){
returnbrand;
}

publicvoidsetBrand(Stringbrand){
this.brand=brand;
}

Cell(Stringbrand){
this.brand=brand;
}
publicvoidrelay(){
System.out.println("正在续电.......");
}

}

编写测试类(TestCell)

importjavax.swing.CellEditor;


publicclassTestCell{
publicstaticvoidmain(String[]args){
Cellcell=newCell("大牌电池");
System.out.println("测试结果:"+cell.getBrand());
cell.relay();
}

}

‘柒’ java 竞赛编程题,有点难度啊!求大侠

package computer;
import java.util.Arrays;import java.util.Random;
import java.util.Scanner;

public class SerachFunction {
public static int[] allnum=new int[20];
// picture ...like a picture
public void picOne(){
System.out.println("************");
System.out.println("1.选择排序");
System.out.println("2.冒泡排序");
System.out.println("3.插入排序");
System.out.println("4.全排列");
System.out.println("5.数字分解为数字和");
System.out.println("6.杀死小朋友问题");
System.out.println("7.阶乘");
System.out.println("8.双色球");
System.out.println("9.100-1000的水仙花数");
System.out.println("10.正数分解因数");
System.out.println("11.恐怖的事情 千万不要输入11");
System.out.println("输入-1退出");
System.out.println("输入-2查看问题注释");
System.out.println("************");
}
public void picTwo(){
System.out.println("注意输入单个字符参数(根据选项输入,多个参数以逗号分割): ");
}
public void picThree(){
System.out.println("5号问题为输入某一数字 出现这个数字可由哪些数字相加而得");
System.out.println("6号问题为9(输入)个已编号的小朋友围一圈报数1,2,3报到3的拖出去xx问剩下的小朋友是几号");
}
public void picFour(){
System.out.println("0>_<0~");
System.out.println("恐怖的事情发生了...说了不要点...");
System.out.println("楼主累死了....");
}
// main
public static void main(String[] args){
SerachFunction fc=new SerachFunction();
fc.inputFunction();
}

public void inputFunction(){ //接受指令并调用相关函数
int command;
char[] params;
Scanner sc=new Scanner(System.in);
while(true){
picOne();
if((command=sc.nextInt())==-1){
break;
}
picTwo();
params=getParamsArray(sc.next());
System.out.println();
switch(command){
case 1:
selectSort(params);
break;
case 2:
bubbleSort(params);
break;
case 3:
insertionSort(params);
break;
case 4:
fullArray(params,0);
break;
case 5:
resolveNum(getQuondam(params),0);
break;
case 6:
killChildren(getQuondam(params));
break;
case 7:
factorial(getQuondam(params),1);
break;
case 8:
twoColorBall();
break;
case 9:
daffodil();
break;
case 10:
int all=0;
primeFactor(getQuondam(params),0);
break;
case 11:
picFour();
break;
case -2:
picThree();
break;
}
System.out.println("Y(^_^)Y");
}
System.out.println("(*^_^*)");
}

/*
* com function
* */
public char[] getParamsArray(String params){
params=params.replaceAll(",","");
return params.toCharArray();
}//to get char[] params
// 选择排序
public void selectSort(char[] params){
for(int i=0;i<params.length-1;i++){
for(int m=i+1;m<params.length;m++){
if(params[i]>params[m]){
changePlace(params,m,i);
}
}
}
showChar(params);
System.out.println("选择排序结束");
}
//冒泡排序
public void bubbleSort(char[] params){
for(int i=params.length-1;i>0;i--){
for(int m=0;m<i;m++){
if(params[m]>params[m+1]){
changePlace(params,m,m+1);
}
}
}
showChar(params);
System.out.println("冒泡排序结束");
}
//插入排序
public void insertionSort(char[] params){
for(int i=1;i<params.length;i++){
for(int m=i-1;m>=0;m--){
if(params[m+1]<params[m]){
changePlace(params,m+1,m);
}
}
}
showChar(params);
System.out.println("插入排序结束");
}
//全排列
public void fullArray(char[] params,int begin){
if(begin==params.length){
showChar(params);
}
for(int i=begin;i<params.length;i++){
if(begin<=params.length){
changePlace(params,begin,i);
fullArray(params,begin+1);
changePlace(params,begin,i);
}
}
}
//数字分解为数字和
public void getAllNum(int[] num,int end){
System.out.print("分解方式:");
for(int i=0;i<end;i++){
System.out.print(num[i]);
if(i+1!=end){
System.out.print(',');
}
}
System.out.println("");
}
public int getArrayT(int[] num,int end){
int tot=0;
for(int i=0;i<end;i++){
tot+=num[i];
}
return tot;
}
public boolean getShoud(int[] num,int end){
for(int i=0;i<end;i++){
if(i+1<end){
if(num[i+1]<num[i]){
return false;
}
}
}
return true;
}
public void resolveNum(int num,int begin){
if(getArrayT(allnum,begin)==num){
if(getShoud(allnum,begin)){
getAllNum(allnum,begin);
}
}
for(int i=1;i<=num;i++){
if(getArrayT(allnum,begin)<=num){
allnum[begin]=i;
resolveNum(num,begin+1);
}
}
}
// 杀死小朋友
public void killChildren(int child){
int alivechild=child;
int num=0;
int index=0;
boolean[] childisdead=new boolean[child];
Arrays.fill(childisdead,true);
while(alivechild!=1){
if(childisdead[index]){
num++;
if(num%3==0){
alivechild--;
childisdead[index]=false;
num=0;
}
}
index++;
if(index==child)
index=0;
}
for(int i=0;i<childisdead.length;i++){
if(childisdead[i])
System.out.println((int)(i+1)+"号小朋友还活着");
}
}
//阶乘
public void factorial(int end,long output){
if(end==1){
System.out.println(output);
return;
}
output=output*end;
factorial(end-1,output);
}
//two color ball;
public void twoColorBall(){
int[] redball=new int[6];
int blueball=(int)(Math.random()*15+1);
int index=0;
while(true){
boolean bol=true;
int red=(int)(Math.random()*32+1);
for(int i=0;i<=index;i++){
if(red==redball[index]){
bol=false;
}
}
if(bol){
redball[index]=red;
index++;
}
if(index==6){
break;
}
}
System.out.print("红色:");
for(int i=0;i<6;i++){
System.out.print(redball[i]+",");
}
System.out.println("");
System.out.println("蓝色:"+blueball);
}
//水仙花
public void daffodil(){
int hundreds=0,decade=0,unit=0;
System.out.print("水仙花数:");
for(int i=100;i<1000;i++){
hundreds=i/100;
decade=(i%100)/10;
unit=(i%100)%10;
hundreds=hundreds*hundreds*hundreds;
decade=decade*decade*decade;
unit=unit*unit*unit;
if(i==(hundreds+decade+unit)){
System.out.print(i+",");
}
}

System.out.println("");
}
//分解为因数
public void getPriShow(int[] num,int end){
System.out.print("分解方式:");
for(int i=0;i<end;i++){
System.out.print(num[i]);
if(i+1!=end){
System.out.print('*');
}
}
System.out.println("");
}
public void primeFactor(int num,int begin){
if(num==1){
if(getShoud(allnum,begin)){
getPriShow(allnum,begin);
}
return;
}
for(int i=2;i<=num;i++){
if(num%i==0){
allnum[begin]=i;
primeFactor(num/i,begin+1);
}

}
}
//展示char数组
public void showChar(char[] params){
for(int i=0;i<params.length;i++){
System.out.print(params[i]);
if(i+1!=params.length){
System.out.print(',');
}
}
System.out.println("");
}
//两数换位置
public void changePlace(char[] params,int begin,int end){
int act;
act=params[begin];
params[begin]=params[end];
params[end]=(char) act;
}
//得到原数
public int getQuondam(char[] num){
return Integer.parseInt(String.valueOf(num));
}

}
//水仙花水的那个就是

‘捌’ java大赛的一道编程题

publicclassToList<T>{
privateList<T>list=newArrayList<T>();
@SuppressWarnings({"rawtypes","unchecked"})
publicstaticToListcreate(Object...vs){
ToListtoList=newToList();
toList.add(vs);
returntoList;
}
@SuppressWarnings("unchecked")
publicToList<T>add(T...vs){
if(vs!=null){
for(Tv:vs){
list.add(v);
}
}
returnthis;
}
publicList<T>toList(){
returnlist;
}
publicstaticvoidmain(String[]args){
ToList<String>toList1=newToList<String>();
//往toList1里添加元素
toList1.add("a","b");
//可以一次添加多个元素,而且add方法能以串式方式调用
toList1.add("c","d","e").add("f").add("g","h","i","j");
//添加完后,将元素导出成一个List
java.util.List<String>list1=toList1.toList();
//
//这段代码检测list1的内容
if(list1.size()!=10){
thrownewRuntimeException();
}
java.util.List<Integer>list2=ToList.create(0,1,2).add(3,4)
.add(0,1).toList();
//
//以下代码检测list2的内容
int[]ia={0,1,2,3,4,0,1};
for(inti=0;i<7;i++){
if(list2.get(i)!=ia[i]){
thrownewRuntimeException();
}
}
}
}

‘玖’ Java程序设计题目

3, 文件名:Three.java
public class Three {

public static void main(String[] args) {
Student stu = new Student("Zhang San", true, (short)12);
System.out.println("Student name: " + stu.name);
System.out.println("Student is a male?: " + stu.sex);
System.out.println("Student's age: " + stu.age);
stu.work();
stu.study();

Teacher teacher = new Teacher();
teacher.learnMoney();
}

}

abstract class Person{//抽象类Person
protected String name;
protected boolean sex;
protected short age;

protected abstract void work(); //work抽象方法
}

interface Learnmoney{//Learnmoney接口
public void learnMoney();
}

interface Study{//Study接口
public void study();
}

class Student extends Person implements Study{//Student类

public void work() {
System.out.println("学生的工作是努力学习");
}

public Student(String name, boolean sex, short age){
super.name = name;
super.sex = sex;
super.age = age;
}

public void study() {
System.out.println("学生正在学习");
}

}

class Teacher extends Person implements Learnmoney{

public void work() {
System.out.println("教师的工作是教书育人");;
}

public void learnMoney() {
System.out.println("教师正在赚钱");
}

}
class Docotor extends Person implements Learnmoney{

public void work() {
System.out.println("医生的职责是救死扶伤");
}

public void learnMoney() {
System.out.println("医生正在赚钱");
}

}
------------------------------------
4文件名:Four.java
public class Four {

public static void main(String[] args) {
Rectangle r = new Rectangle(3, 4);
System.out.println("Area is : " + r.area());
System.out.println("Circle is: " + r.circle());
}
}

class Rectangle{
private double width;
private double height;

public Rectangle(double width, double height){
this.width = width;
this.height = height;
}

public double circle(){//求周长
return (width + height) * 2;
}

public double area(){//求面积
return width * height;
}
}

--------------------
5Five.java
public class Five {

public static void main(String[] args) {
AImpl a = new AImpl();
a.paint();
}

}

interface A {
public int method1(int x);
public int method2(int x, int y);
}

class AImpl implements A{

public int method1(int x) {
return (int)Math.pow(x, 5);
}

public int method2(int x, int y) {
return x > y? x: y;
}

public void paint(){
int result1 = method1(2);
int result2 = method2(2, 8);

System.out.println("method1(2) = " + result1);
System.out.println("method2(2, 8) = " + result2);
}

}

-----------------------------测试
method1(2) = 32
method2(2, 8) = 8

阅读全文

与java编程大赛题目相关的资料

热点内容
查公司薪资的app叫什么 浏览:407
压缩包多个文件夹图片连续看 浏览:480
linuxmysql无法用命令启动 浏览:437
地税身份认证用什么ApP 浏览:529
网址加密后能防止被封网吗 浏览:759
pic单片机项目 浏览:177
oppo手机忘记加密密码忘了怎么办 浏览:149
算法竞赛入门经典代码 浏览:155
多功能防盗加密锁闭阀 浏览:862
遥控灯单片机 浏览:813
网络时间同步算法 浏览:473
单片机p1口怎么检测 浏览:913
pdf高亮颜色 浏览:322
银行程序员的工资多少 浏览:19
服务器如何使用移动硬盘 浏览:533
pc饥荒为什么没有服务器 浏览:442
阿里云服务器地址是什么 浏览:148
如何戒除网瘾app 浏览:955
时间戳服务器是什么 浏览:936
文件怎么转成pdf格式的文件格式 浏览:632