//如果当前计数器count的值小于n,则输出当前字符
35.System.out.print(string[i]);
36.}elseif(count==n){
//如果当前计数器count的值等于n,则输出当前字符
37.System.out.print(string[i]);
38.count=0;
39.System.out.println();
//内循环结果,则需要换行,起到控制打印格式的作用
40.}else{
41.count=0;//如果当前计数器count的
值大于n,则计数器count清零,接着执行外部循环
System.out.println();
42.
}43.
}44.
}45.
}
46.
程序的输出结果如图17.1所示。
)基础编程试题(2Java17.1
怎样实现元素互换面试题2
考题题干个元素55个元素与后从键盘上输入10个整数,并将其放入一个一维数组中,然后将其前65个元素与第个元素互换…第个元素与第对换,即:
第1个元素与第10个元素互换,第29个元素互换。
分别输出数组原来各元素的值和对换后各元素的值。
试题分析
由于本题的要求是实现头尾元素互换,所以可以釆用取利用临时变量的方法来进行元素交换。
参考答案
具体代码实现如下:
1.packageprograme;
2.
import3.java.io.BufferedReader;
importjava.io.IOException;4.importjava.io.InputStreamReader;5.6.
public7.classHuHuanDemo{
main(Stringargs[]){
voidstaticpublic8.
9.print();
10.
11.}
12.
13.publicstaticint[]write(){
14.BufferedReader[]buf=new
BufferedReader[10];/*申请缓冲数组*/
15.intn;/*开关量和中间量*/
16.intarray[]=newint[10];
17.for(inti=0;i<10;i++)/*赋值*/
18.{
19.buf[i]=newBufferedReader(new
InputStreamReader(System.in));
20./*给每个缓冲区定义*/
21.do/*判断是否是空串,如是则重新输入*/
22.{
23.n=1;
24.System.out.print(请输入第+(i+1)+个整数尺);
25.try/*建立一个异常捕获*/
26.{
27.array[i]=Integer.parseInt
(buf[i].readLine());/*执行串变整数*/
28./*
29.*Integer.parseInt(str)-str
转成int型buf[i].readLine()-
30.*从系统输入缓冲区读入字符流给
buf缓冲区并返回字符串
31.*/
32.}catch(NumberFormatExceptione)/*捕获异常*/
33.{
34.System.out.println(数据输入
错误请重新输入);/*处理异常*/
35.n=0;
36.}catch(IOExceptione){
37.e.printStackTrace();
38.}
39.}while(n==0);
40.}
41.returnarray;
42.
43.}
44.
print(){voidpublicstatic45.[]ary=write();int46.
s;
int47.);尺\
你输入的数组是48.System.out.println(输出原数组*/;i<10;i++)/*49.for(inti=0{
50.
51.System.out.print(ary[i]+?
);
52.}
53.for(inti=0;i<5;i++)/*对换*/
54.{
55.s=ary[i];
56.ary[i]=ary[9-i];
57.ary[9-i]=s;
58.}
59.
60.System.out.println(\
对换后的数组是尺);
61.for(inti=0;i<10;i++)/*输出对换后数组*/
62.{
63.System.out.print(ary[i]+?
);
64.}
65.System.out.println();
66.}
67.
68.}
69.程序输出的结果如图17.2所示。
17.1Java基础编程试题(3)
怎样实现元素排序3面试题.
考题题干COLLECTION在(3)实现一种排序。
(2)Java类实现序列化的方法是什么?
1()用Java框架中,如果实现自然比较方法,则需要实现什么样的接口?
试题分析
排序是程序员经常遇到的,也是基本的技巧之一,一般的排序方法有插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。
下面详细介绍3种排序方法。
1.冒泡排序(BubbleSort)
最简单的排序方法是冒泡排序法。
这种方法的基本思想是,将待排序的元素看作是竖着排列的气泡,较小的元素比较轻,从而要往上浮。
在冒泡排序算法中要对这个气泡序列处理若干遍。
所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻元素的顺序是否正确。
如果发现两个相邻元素的顺序不对,即轻的元素在下面,就交换它们的位置。
显然,处理一遍之后,最轻的元素就浮到了最高位置;处理两遍之后,次轻的元素就浮到了次高位置。
在进行第二遍处理时,由于最高位置上的元素已是最轻元素,所以不必检查。
一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排序。
2.选择排序(SelectionSort)
选择排序的基本思想是,对待排序的记录序列进行n-1遍的处理,第1遍处理是将L[1..n]中最小者与L[1]交换位置,第2遍处理是将L[2..n]中最小者与L[2]交换位置,……,第i遍处理是将L[i..n]中最小者与L[i]交换位置。
这样,经过i遍处理之后,前i个记录的位置就已经按从小到大的顺序排列好了。
当然,在实际操作时,也可以根据需要,通过从待排序的记录中选择最大者与其首记录交换位置,按从大到小的顺序进行排序处理。
3.插入排序(InsertionSort)
插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]已排好序。
第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]还是排好序的序列。
要达到这个目的,可以用顺序比较的方法。
首先比较L[i]和L[i-1],如果L[i-1]≤L[i],则L[1..i]已排好序,第i遍处理就结束了;否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置(j1≤j≤i-1),使得L[j]≤L[j+1]时为止。
简言之,插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
参考答案
(1)具体代码实现如下:
1.packageprograme;
import2.java.util.*;
class3.InsertionSort{
ArrayListlist;
4.
5.//num指的是数据的个数,mod指的是可以
产生随机数的范围在1~mod之间
6.publicInsertionSort(intnum,intmod){
7.list=newArrayList(num);
Randomdom=newRandom();
8.
9.System.out.println(排序之前的数组尺);
10.for(inti=0;i11.list.add(newInteger(Math.abs
(dom.nextInt())%mod+1));
12.System.out.println(汜獩孴+i
+嵜尽+list.get(i));
13.}
14.}
15.publicvoidSortIt(){
16.IntegertempInt;
17.intMaxSize=1;
18.for(inti=1;i19.tempInt=(Integer)list.remove(i);
20.if(tempInt.intValue()>=((Integer)
list.get(MaxSize-1))
21..intValue()){
22.list.add(MaxSize,tempInt);
23.MaxSize++;
24.}else{
25.for(intj=0;j26.if(((Integer)list.get(j))
.intValue()>=tempInt
27..intValue()){
28.list.add(j,tempInt);
29.MaxSize++;
30.break;
31.}
32.}
33.}
34.}
35.System.out.println(排序之后的数组尺);
36.for(inti=0;i37.System.out.println(汜獩孴+i+嵜尽+list.get(i));
38.}
39.}
40.publicstaticvoidmain(String[]args){
41.InsertionSortis=newInsertionSort(10,100);
is.SortIt();
42.
}43.}
44.
17.3所示。
程序的输出结果如图
4)17.1Java基础编程试题(Singleton模式编程面试题4怎样实现考题题干Singleton模式的程序。
请编写一个试题分析只有一个实例存在。
在应用程序中,一个类ClassSingleton模式的主要作用是保证在Java的好处还在于很多操作中,比如建立目录数据库连接都需要这样的单线程操作。
使用SingletonJava垃圾回收。
可以节省内存,因为它限制了实例的个数,有利于static它有一个它的构造函数为private的,一般Singleton模式通常的形式为:
定义一个类,方法获取对它的引用,getInstance变量,在类初始化时实例化,通过一个public的的private继而调用其中的方法。
参考答案(两种实现方法,取一即可)1.packageprograme;
2.
public3.classSingleton{
4.privateSingleton(){
}
5.//注意这是private6.只供内部调用
privatefinal7.staticSingletoninstance=newSingleton();
8.
9.//这里提供了一个供外部访问本class的静态方法,可以直接访问
10.publicstaticSingletongetInstance(){
11.returninstance;
12.}
}
13.
或者:
programe;1.package2.Singleton{
3.publicclass;staticSingletoninstance=4.nullprivate
5.
SingletongetInstance(){synchronizedpublic6.static使用时生成实例,提高了效率!
7.//
)
(instance==null8.ifSingleton();
instance=new9.instance;return10.}11.}
12.5哥德巴赫猜想的近似证明面试题考题题干程序,请编写一个Java哥德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和。
100内哥德巴赫猜想的正确性,也就是近似证明哥德巴赫猜想。
验证1~试题分析然后逐一验证每个偶数是否满足哥德巴赫100内的所有偶数。
可以应用枚举的方法列出1~猜想的论证。
如果有一个不符合,就意味着哥德巴赫猜想不成立。
。
由m=m/2+m/2,……,可以表示成mm=1+(m-1),m=2+(m-2),m=3+(m-3)一个正偶数的后半部分和前半部分的结果是一样的,只是加数顺序不同,所以可以忽略。
于m/2参考答案具体代码实现如下:
1.packageprograme;
2.
public3.classGuess{
public4.staticvoidmain(String[]args){
System.out.println(在5.1~100范围内,
现在开始证实哥德巴赫猜想:
);
6.if(Testify_Guess(1,100)){
7.System.out.println(在1~100范围内,
哥德巴赫猜想是正确的。
);
8.}else{
9.System.out.println(哥德巴赫猜想是错误的);
10.}
11.
12.}
13.
14.publicstaticbooleanTestify_Guess(intlow,inthigh){
15.//判断1~100范围内的所有偶数是否符合哥德巴赫猜想,
符合则返回true,反之则返回false
16.inti,j=0;
17.booleanflag=true;
18.for(i=low;i<=high;i++)
19.if(i%2==0&&i>2)//
在1~100之间选取大于2的偶数进行猜想测试
20.if(isGoldbach(i)){
21.j++;//
j用来控制输出格式,每行输出5个数据
22.if(j==5){
23.System.out.println();
24.j=0;
25.}
26.}else{
27.flag=false;
28.break;
29.}
30.
31.returnflag;
32.}
33.
34.publicstaticbooleanisGoldbach(inta){
//判断参数a是否符合哥德巴赫猜想
35.inti;
36.booleanflag=false;
37.for(i=1;i<=a/2;i++){
38.if(isPrime(i)&&isPrime(a-i)){
//根据试题分析中的表达式,传入相关的两个参数
39.flag=true;
40.System.out.print(a+?
+i+?
+(a-i)
+?
尠);
41.break;
42.//只要有一个符合条件的就可以退出循环,判断下一个偶数
43.}
44.}
45.
46.returnflag;
47.}
48.
49.publicstaticbooleanisPrime(inti){
falsetrue判断参数i是否是素数,是则返回反之则返回50.//
n;
int51.
;
flag=true52.boolean//1本身(1==i)53.if不是素数,因此需把这个特殊的数字抛出
;
false54.flag=
;n++)
1(n=2;n<=i-55.for之间有其因子~i-1i/*判断是否是素数的一个方法是看2true*/false,反之则返回(能被2整除),有则不是素数返回){(i%n==056.if57.flag=false;
58.break;
59.}
60.returnflag;
61.}
62.}
程序的输出结果如图17.4所示。
17.1Java基础编程试题(5)
面试题6怎样实现金额转换
考题题干
金额转换,阿拉伯数字的金额转换成中国传统的形式如:
(¥1011)→(壹仟零壹拾壹元整)输出。
试题分析
金额转换,在开发财务相关软件时会经常用到,也是软件本地化的一个需要。
一般开发公司或者团队都有相应的金额转换类或者是模块,配合报表工具,可以实现良好的本地化。
这里给出一个简单的金额转换代码,供读者参考。
参考答案.
具体代码实现如下:
1.packageprograme;
impo