1、不使用循环,等比数列输出整型 n、2n、4n、8n……当大于max时,反向输出8n、4n、2n、n。

例如 n=10,max=100。 输出:

10

20

40

80

80

40

20

10

解题思路: 递归实现。

public class Test {

    public static void main(String[] args) {
multiply(10, 100);
}
public static void multiply(int n, int max) {
if (n < max) {
System.out.println(n);
multiply(2 * n, max);
System.out.println(n);
}
}
}

如果需要输出大于100后的数,则代码如下:

public class Test {

    public static void main(String[] args) {

        multiply(10, 100,10);

    }

    public static void multiply(int n, int max,int min) {
if (n < max) {
System.out.println(n);
multiply(2 * n, max, min);
} else{
System.out.println(n);
divide(n,min);
}
} public static void divide(int n, int min) {
if (n >= min) {
System.out.println(n);
divide(n / 2, min);
}
}
}

2、Comparator 排序。 对某些对象 collection 进行整体排序。排序时将此接口的实现传递给Collections.sort方法或者Arrays.sort方法排序。实现 o1.compareTo(o2) 方法。如果是升序排序:o1小于o2,返回-1(负数),相等返回0,o1大于o2,返回1(正数);反之降序。

代码如下:

public class Supermarket{

    private String name;
private double distance; //距离
private boolean isBusiness; // 是否营业
private double money; // 营业额 public Supermarket(String name, double distance, boolean isBusiness,
double money) {
super();
this.name = name;
this.distance = distance;
this.isBusiness = isBusiness;
this.money = money;
} @Override
public String toString() {
return name + "\t" + distance + "\t" + (isBusiness ? "是" : "否") + "\t"
+ money + "\r\n";
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public double getDistance() {
return distance;
} public void setDistance(double distance) {
this.distance = distance;
} public boolean isBusiness() {
return isBusiness;
} public void setBusiness(boolean isBusiness) {
this.isBusiness = isBusiness;
} public double getMoney() {
return money;
} public void setMoney(double money) {
this.money = money;
} }
public class Menu {

    public static void main(String[] args) {

        List<Supermarket> list = new ArrayList<Supermarket>();

        Supermarket s1 = new Supermarket("天天超市", 1.0, true, 5000);
Supermarket s2 = new Supermarket("地地超市", 3.5, false, 2000);
Supermarket s3 = new Supermarket("人人超市", 2.5, true, 6000);
Supermarket s4 = new Supermarket("神神超市", 5.0, false, 1000);
Supermarket s5 = new Supermarket("佛佛超市", 2.0, true, 3000); list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5); // System.out.println(list);
String choose ="";
Scanner input = new Scanner(System.in);
while(!"0".equals(choose)){
System.out.println("1、店名\t2、距离\t3、是否营业\t4、营业额\t0、退出");
System.out.println("请选择:");
choose = input.next();
switch (choose) {
case "1":
Collections.sort(list,new Comparator<Supermarket>() {
@Override
public int compare(Supermarket o1, Supermarket o2) {
return o1.getName().compareTo(o2.getName());
}
});
for (Supermarket supermarket : list) {
System.out.print(supermarket.toString());
}
break;
case "2":
Collections.sort(list, new Comparator<Supermarket>() { @Override
public int compare(Supermarket o1, Supermarket o2) {
if(o1.getDistance()<o2.getDistance())
return -1;
return 1;
}
});
for (Supermarket supermarket : list) {
System.out.print(supermarket.toString());
}
break;
case "3":
Collections.sort(list, new Comparator<Supermarket>() { @Override
public int compare(Supermarket o1, Supermarket o2) {
if(o1.isBusiness())
return -1;
return 1;
}
});
for (Supermarket supermarket : list) {
System.out.print(supermarket.toString());
}
break;
case "4":
Collections.sort(list, new Comparator<Supermarket>() { @Override
public int compare(Supermarket o1, Supermarket o2) {
if(o1.getMoney()<o2.getMoney())
return -1;
return 1;
}
});
for (Supermarket supermarket : list) {
System.out.print(supermarket.toString());
}
break;
case "0":
System.out.println("程序结束。");
break;
default:
System.out.println("你输入的有误,请重新输入!");
break;
}
}
input.close();
} }

3、SimpleDateFormat 时间转换工具类。用来格式化时间日期。

示例:显示当前时间,格式为 格式为 2017年7月15日 上午9点42分23秒, 每5秒显示一次时间。

解题思路:创建线程,格式化日期。 代码如下:

public class Timer extends Thread {

    @Override
public void run() { SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 a HH时mm分ss秒"); // a --> AM, PM
try {
while (true) {
Date date = new Date(); //获取当前时间
String time = format.format(date); //格式化时间
System.out.println(time);
Thread.sleep(5000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

4、创建两个基于udp的应用程序,其中一个发送10次随机整数到另一个应用程序,另外一个应用程序将所有整数进行相加后,将所有数的累加(x1+x2+x3+...+x=y)发往第一个应用程序,第一个应用程序将结果打印出来。

代码如下:

//发送端:

public class Send extends Thread {

    DatagramSocket socket;

    public Send() {
try {
socket = new DatagramSocket(7777);
} catch (SocketException e) {
e.printStackTrace();
}
} public void sendNumber() {
InetSocketAddress address = new InetSocketAddress("127.0.0.1", 8888);
for (int i = 0; i < 10; i++) {
int num = (int) (Math.random() * 100);
String msg = num + "";
DatagramPacket packet = new DatagramPacket(msg.getBytes(),
msg.getBytes().length, address);
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
} @Override
public void run() {
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
try {
socket.receive(packet);
System.out.println("收到信息:"+ new String(packet.getData(),0,packet.getLength()));
} catch (IOException e) {
e.printStackTrace();
}
}
}

//接收端

public class Receiver extends Thread {

    DatagramSocket socket;

    public Receiver() {
try {
socket = new DatagramSocket(8888);
} catch (SocketException e) {
e.printStackTrace();
}
} @Override
public void run() {
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
try {
socket.receive(packet);
int number = Integer.parseInt(new String(packet.getData(), 0,
packet.getLength()));
list.add(number);
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(list);
int sum = 0;
StringBuffer sb = new StringBuffer();
for (Integer integer : list) {
sum += integer;
sb.append(integer + "");
}
String str = sb.toString();
str = str.substring(0, sb.length() - 1);
str += "=" + sum;
InetSocketAddress address = new InetSocketAddress("127.0.0.1", 7777);
DatagramPacket sendPacket = new DatagramPacket(str.getBytes(),
str.getBytes().length, address);
try {
socket.send(sendPacket);
} catch (IOException e) {
e.printStackTrace();
}
}
}
//Test测试
public class Test { public static void main(String[] args) throws IOException { new Receiver().start();
Send send = new Send();
send.start();
send.sendNumber(); }
}

Java试题的更多相关文章

  1. 蓝桥杯java试题《洗牌》

    问题描述 小弱T在闲暇的时候会和室友打扑克,输的人就要负责洗牌.虽然小弱T不怎么会洗牌,但是他却总是输. 渐渐地小弱T发现了一个规律:只要自己洗牌,自己就一定会输.所以小弱T认为自己洗牌不够均匀,就独 ...

  2. 2018.6.22 Java试题测试结果

    如何从有数字规律的网址抓取网页并保存在当前目录?假设网址为 http://test/0.xml,其中这个数字可以递增到100. for((i=0;i<100;++i));do wget http ...

  3. 总结一些Java试题

    1.方法重载和重写的区别: 重载是在同一个类中,同名不同参 重写是在不同类中,同名同参 2.抽象类的特点: 抽象方法和抽象类都要被关键词abstract修饰 抽象方法一定在抽象类中 抽象类不能new对 ...

  4. java试题复盘——11月25日

    上: 11.下列表述错误的是?(D) A.int是基本类型,直接存数值,Integer是对象,用一个引用指向这个对象. B.在子类构造方法中使用super()显示调用父类的构造方法,super()必须 ...

  5. java试题复盘——11月13日

    上: 10. AccessViolationException异常触发后,下列程序的输出结果为(   A   ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 AccessViol ...

  6. java试题复盘——9月26日

    5.在 JAVA 编程中, Java 编译器会将 Java 程序转换为(A) A.  字节码 B.  可执行代码 C.  机器代码 D.  以上都不对 解析: 编译器将Java源代码编译成字节码cla ...

  7. java试题复盘——9月8日

    上: 1.可将语句块或方法设为同步使用的语句是(A) A synchronized              用于方法或者代码块前,使此方法或者代码变成同步的 B static             ...

  8. Java试题错题集01

    1.javac与java命令 两个命令 javac 和 java. javac 后面跟着的是java文件的文件名,例如 HelloWorld.java. 该命令用于将 java 源文件编译为 clas ...

  9. 蓝桥杯2022年java试题

    一:基础练习: (本文只附代码,解析后续修改后添上) 1.a+b问题: 代码如下: 1 import java.util.*; 2 public class Main { 3 public stati ...

  10. 昨天面试新浪 java试题

      昨天去了新浪网面试,感觉新浪真的挺不错的,工作环境那叫一个好啊.对于一般屌丝的话进到这种公司就可以呆一辈子了.做了面试之后感觉不管大公司还是小公司都还是注重基础和你平时工作的积累的.所以不能抱怨现 ...

随机推荐

  1. 【Netty】WebSocket

    一.前言 前面学习了codec和ChannelHandler之间的关系,接着学习WebSocket. 二.WebSocket 2.1. WebSocket介绍 WebSocket协议允许客户端和服务器 ...

  2. 深度解析PHP数组函数array_chunk

    array_chunk是PHP中的一个数组分割函数,是将一个数组分割为多个数组块 我们可以把它理解卖豆腐的商人把一整块大豆腐切割为一个一个的小块来进行售卖 这个函数需要三个参数: 被切割的数组(必需) ...

  3. Nim 博弈和 sg 函数

    sg 函数 参考 通俗易懂 论文 几类经典的博弈问题 阶梯博弈: 只考虑奇数号楼梯Nim,若偶数楼梯只作容器,那么游戏变为Nim.题目 翻转硬币: 局面的SG值为局面中每个正面朝上的棋子单一存在时的S ...

  4. 网页中使用CSS和JS阻止用户选择内容

    CSS实现 body{ -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none; ...

  5. UI篇之——用户体验

    内容均为原创,转载请注明处处谢谢. 用户体验(User Experience,简称UX)是一个关于用户(users)以及交互(interactive)技术系统领域的整体概念.具体来说,它代表了一个网站 ...

  6. Mac 上Python多版本切换

    Mac上自带了Python2.x的版本,有时需要使用Python3.x版本做开发,但不能删了Python2.x,可能引起系统不稳定,那么就需要安装多个版本的Python. 1.安装Python3.x版 ...

  7. angularjs应用prerender.io 搜索引擎优化实践

    上一篇博文(http://www.cnblogs.com/ideal-lx/p/5625428.html)介绍了单页面搜索引擎优化的原理,以及介绍了两个开源框架的优劣.prerender框架的工作原理 ...

  8. [转] DDD领域驱动设计框架分享

    从去年10月份开始,学了几个月的领域驱动设计(Domain Driven Design,简称DDD).主要是学习领域驱动设计之父Eric Evans的名著:<Domain-driven desi ...

  9. Python os模块--路径、文件、系统命令等操作

    os模块包含普遍的操作系统功能. 注意:函数参数path是文件或目录的路径,filename是文件的路径,dirname是目录的路径,路径可以是相对路径,也可绝对路径 常见或重要的函数为加粗字体 os ...

  10. 解决安卓手机input获取焦点时会将底部固定定位按钮顶起的问题

    一个页面上有个固定在底部的按钮,页面中有个input框,点击input框获取焦点时,在苹果手机上没事,但在安卓手机上弹出的键盘会将按钮顶起来,这就很不好看了,想了个办法解决一下.之前一直觉得用inpu ...