java50道经典逻辑题

java50道经典逻辑题
java50道经典逻辑题

題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

【程序1】

題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

分析:咋一看不知道如何下手,但是你在草稿纸上写写分析一下,就很快发现其中的规律了package logic; import java.util.Scanner; public class RabbitNum { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("你想知道前几个月的兔子的数量"); int month = in.nextInt(); int[] mon = new int[month]; if(month < 3){ System.out.println("第" + month + "个月有1 对兔子,共2 只"); } else for(int i = 2; i < month; i++){ mon[0] = mon[1] = 1; mon[i] = mon[i - 1] + mon[i - 2]; System.out.printf("第%d 个月有%d 对兔子,共%d 只兔子\n", i + 1, mon[i], 2 * mon[i]); } } }

【程序2】

题目:判断101-200之间有多少个素数,并输出所有素数。

分析:如果知道素数是什么,该题就应该不难了

package logic; public class Prime { public static void main(String[] args) { System.out.print("101--200中的素数有:"); for(int i = 101; i <= 200; i++){ if(isPrime(i)) System.out.print(" " + i); } } //isPrime方法用来判断一个数是否是素数private static boolean isPrime(int i) { // TODO Auto-generated method stub for(int j = 2; j <= Math.sqrt(i); j++){ if(i % j == 0) return false; } return true; } }

【程序3】

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

分析:解决这个题目主要要知道怎么把一个数的各个位上的数拆分出来

package logic; import java.util.Scanner; public class NarcissisticNum { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("水仙花数有:"); for(int num = 100; num < 1000; num++){ if(isNarcissisticNum(num)) System.out.println(" " + num); } } //一个判断正整数是否为水仙花数的方法private static boolean isNarcissisticNum(int num) { // TODO Auto-generated method stub int a = num / 100; //分离出百位a int b = (num / 10) % 10; //分离出十位b int c = num % 10; //分离出个位 c int sum = a * a * a + b * b * b + c * c * c; if(sum == num) return true; else return false; } }

【程序4】

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

分析:按步骤实现就可以了(有多种实现方式,以下代码供参考。我也参考了别人的)package logic; import java.util.Scanner; public class PrimeFactorOfInteger { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个

大于 3 的正整数"); int num = input.nextInt(); System.out.print(num + "的素因数:"); factor(num); } private static void factor(int num) { // TODO Auto-generated method stub for(int i = 2; i <= Math.sqrt(num); i++){ if(num % i == 0){ System.out.print(i + " * "); if(isPrime(num / i)){ System.out.println(num / i); } else factor(num / i); break; } } } private static boolean isPrime(int i) { // TODO Auto-generated method stub for(int j = 2; j <= Math.sqrt(i); j++){ if(i % j == 0) return false; } return true; } }

【程序5】

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

分析:这题应该是最简单的吧

package logic; import java.util.Scanner; public class ConditionalOperator { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入你的分数"); int score = in.nextInt(); if(score >= 90){ System.out.println("A 恭喜"); } else if(score >= 60){ System.out.println("B 不错"); } else{ System.out.println("C 加油"); } } }

【程序6】

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

分析:需要了解求最大公约数和最小公倍数的方法

package logic; import java.util.Scanner; public class Example6 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入第一个数"); int a = in.nextInt(); System.out.println("请输入第二个数"); int b = in.nextInt(); System.out.println("这两个数的最大公约数是" + MaxCommonDivisor(a, b)); System.out.println("这两个数的最小公倍数是" + MinCommonMultiple(a, b)); } private static int MaxCommonDivisor(int a, int b) { // TODO Auto-generated method stub if(a < b){ int temp = a; a = b; b = temp; } while(a % b != 0){ int temp = a % b; a = b; b = temp; } return b; } private static int MinCommonMultiple(int a, int b) { // TODO Auto-generated method stub return a * b / MaxCommonDivisor(a, b); } }

【程序7】

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

分析:这题也比较简单,知道怎么表示字母、空格、数字就OK

package logic; import java.util.Scanner; public class Statistic { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Input one sentance."); String s = in.nextLine(); int letter = 0, symbol = 0, space = 0, number = 0; char[] strArray = s.toCharArray(); for (int i = 0; i < strArray.length; i++) { char c = strArray[i]; if(('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) letter++; else if(48 <= c && c <= 57) //注意!数字0-9的ASCII码是48-57 number++; else if(c == ' ') space++; else symbol++; } System.out.println("This sentance have " + letter + " letters, "); System.out.println("have "+ number + " numbers, "); System.out.println("have " + space + " spaces, " + "and " + symbol + " symbols."); } }

【程序8】

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

分析:其实跟分解一个数的各个位数的方法类似

package logic; import java.util.Scanner; public class Example8 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入相加的基数"); int n = input.nextInt(); System.out.println("请输入要相加的个数"); int i = input.nextInt(); long total = 0L; long temp = n; for(int j = 0; j < i; j++){ total += temp; temp = temp * 10 + n; } System.out.println("和为" + total); } }

【程序9】

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

分析:跟求一个数的素因数有类似的地方,但这里的因子可以不是素数

package logic; import java.util.Scanner; public class WholeNumber { public static void main(String[] args) { System.out.println("1000以内的完数有:"); for(int num = 1; num < 1000; num++){ isWholeNumber(num); } } private static void isWholeNumber(int num) { // TODO Auto-generated method stub int sum = 0; for(int i = 1; i <= num / 2; i++){ if(num % i == 0){ sum += i; } } if(sum == num) System.out.println(num); } }

【程序10】

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

分析:注意弹球一上一下的距离

package logic; import java.util.Scanner; public class Pinball { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入原始高度。"); double s = in.nextDouble(); System.out.println("要求第几次落地后的距离。"); int n = in.nextInt(); double total = s; System.out.printf("第%d次落地后共走的距离是:" , n); if(n == 1) { System.out.println(total); System.out.printf("第%d次反弹的距离是%f。", n, s / 2); } else { for(int i = 1; i < n; i++) { s = s / 2; total += 2 * s; //一上一下共两倍的弹跳距离} System.out.print(total); System.out.println(); System.out.printf("第%d次反弹的距离是%f。", n, s / 2); } } }

【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?分析:这里不免会联想到高中学的排列组合,但这里并不能用排列组合解决问题。这里其实不难,用三层循环,去掉不合要求的就行了

package logic; public class Three_digitNum { public static void main(String[] args) { int i, j, k; //

分别代表个、十、百位int num; //用来输出符合要求的三位数int count = 0; //用来统计符合要求的三位数有多少个System.out.println("符合要求的三位数有:"); for(i = 1; i <= 4; i++){ for(j = 1; j <= 4; j++){ if(i != j) //提前把有重复的部分情况过滤掉,减少运行次数,优化性能for(k = 1; k <= 4; k++){ if(i != k && j != k){ num = i + j * 10 + k * 100; System.out.println(num); count++; } } } } System.out.println("符合要求的三位数共有" + count + "个"); } }

【程序12】

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润

高于10万元,低于20万元时,低于10万元的部分

按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部

分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当

月利润I,求应发放奖金总数?

分析:我可以说这是一个数学题么?分好区间用条件运算符if else 就能解决,跟程序5类似。(代码略,相信你可以)

【程序13】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

分析:一个整数i,加上100是一个数j 的平方,再加上168又是一个数k 的平方,所以用三层循环可以解决问题

package logic; public class FundNum { public static void main(String[] args) { long i, j, k; for(i = 1;

i < 100000; i ++) { for(j = 0; j < 1000; j++) { if(j * j == i + 100) { for(k = j; k < 1000; k++) { if(k * k == i + 268) System.out.println(i); } } } } } }

【程序14】

题目:输入某年某月某日,判断这一天是这一年的第几天?

分析:用到switch,还要判断平润年

package logic; import java.util.Scanner; public class DayOfYear { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入年份。"); int year = in.nextInt(); System.out.println("请输入月份。"); int month = in.nextInt(); System.out.println("请输入日期。"); int day = in.nextInt(); int sum = 0;; switch(month - 1) { case 0: sum = 0; break; case 1: sum = 31; break; case 2: sum = 59; break; case 3: sum = 90; break; case 4: sum = 120; break; case 5: sum = 151; break; case 6: sum = 181; break; case 7: sum = 212; break; case 8: sum = 243; break; case 9: sum = 273; break; case 10: sum = 304; break; case 11: sum = 334; break; } if((month > 2)&&isLeap(year)) System.out.printf("这天是这年第%d天。", sum + day + 1); else System.out.printf("这天是这年第%d天。", sum + day); } private static boolean isLeap(int year) { if(((year % 100 != 0)&&(year % 4 == 0)) || (year % 400 == 0)) return true; else return false; } }

【程序15】

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

分析:可以用条件循环,也可以用排序算法(插入排序、冒泡排序、选择排序等)

<一> 条件循环

package logic; import java.util.Scanner; public class MinOfThree { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入三个整数"); System.out.println("请输入第1个整数"); int a = in.nextInt(); System.out.println("请输入第2个整数"); int b = in.nextInt(); System.out.println("请输入第3个整数"); int c = in.nextInt(); System.out.print("从小到大的顺序为:"); if(a < b){ if(b < c){ System.out.printf("%d<%d<%d", a, b,

c); }else{ if(a < c) System.out.printf("%d<%d<%d", a, c, b); else System.out.printf("%d<%d<%d", c, a, b); } }else{ if(c < b){ System.out.printf("%d<%d<%d", c, b, a); }else{ if(c < a) System.out.printf("%d<%d<%d", b, c, a); else System.out.printf("%d<%d<%d", b, a, c); } } } }

<二> 排序算法

参考java里的4种排序算法

【程序16】

题目:输出9*9口诀。

分析:二层循环搞定

package logic; public class JiujiuBiao { public static void main(String[] args) { for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { int total = 0; total = i * j; System.out.printf("%d * %d = %-5d", j, i, total); } System.out.println(); } } }

【程序17】

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了

一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

分析:用逆思维推推就明白了。第10天有一个桃子,第9天有3个,第8天有7个,...... package logic; public class EatPeach { public static void main(String[] args) { int total = 1; //day = 1的时候,算出来的total其实是第9天有的桃子//day = 9的时候,算出来的total就是第1天的桃子for(int day = 1; day < 10; day++){ total = 2 * (total + 1); } System.out.println("一开始共有" + total + " 桃子"); } }

【程序18】

题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。

a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

分析:答案很简单,可用程序却感觉不怎么好表达、实现。我还是参考了网上的代码package logic; public class MatchCP { public static void main(String[] args) { char i, j, k; //i,j,k分别是a,b,c的对手for(i = 'X'; i <= 'Z'; i++){ for(j = 'X'; j <= 'Z'; j++){ if(i != j){ for(k = 'X'; k < 'Z'; k++){ if(i != k && j != k){ if(i != 'X' && k != 'X' && k != 'Z') System.out.printf("a -- %c\nb -- %c\nc -- %c", i, j, k); } } } } } } }

【程序19】

题目:打印出如下图案(菱形)

*

***

*****

*******

*****

***

*

分析:主要就是控制格式,先输出上半部分,再输出下半部分

package logic; public class Prismatic { public static void main(String[] args) { for(int i = 0; i < 4; i++){ //1到4行for(int j = 1; j <= (6 - 2 * i) / 2; j++){ //每行前面的空格数System.out.print(" "); } for(int k = 1; k <= 2 * i + 1; k++){ System.out.print("*"); //每行的*号} System.out.println();

//换行} //下半部分for(int i = 0; i < 3; i++){ for(int j = 0; j < i + 1; j++){ System.out.print(" "); } for(int k = 0; k < 5 - 2 * i; k++){ System.out.print("*"); } System.out.println(); } } }

【程序20】

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

分析:相信大家不难找出规律,实现也不难

package logic; public class FractionSum { public static void main(String[] args) { float i = 2.0f, j = 1.0f; //i为分子,j为分母float num = 2.0f; //num是分数,sum是分数的和float sum = 2.0f; for(int m = 1; m < 20; m++){ //m = 1时,num已经是第2个加数了,所以m < 20 i = i + j; j = i - j; //变化前的i 赋值给j num = i / j; sum += num; } System.out.println("前20个分数的和为" + sum); } }

【程序21】

题目:求1+2!+3!+...+20!的和。

分析:联想到1—100的和,只不过每个加数是相应数的阶乘

package logic; import java.util.Scanner; public class Recursion { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("你想计算到哪个数的阶乘的和"); int num = in.nextInt(); long temp = 0L; long sum = 0L; for(int i = 1; i <= num; i++){ temp = recursion(i); sum += temp; } System.out.println("计算到" + num + "的阶乘和是" + sum); } //计算某个数num 的阶乘private static long recursion(int num) { // TODO Auto-generated method stub if(num > 1){ return num * recursion(num - 1); } return 1; } }

【程序22】

题目:利用递归方法求5!。

分析:参考上题程序21的代码里的计算阶乘的方法(代码略)

【程序23】

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,

又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

分析:这题与程序17有异曲同工之妙,倒过来分析就简单了。(代码略)

【程序24】

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。分析:又是拆数字游戏

package logic; import java.util.Scanner; public class ReversedNum { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个不多于5位的整数"); int num = in.nextInt(); int n = 1; System.out.print("这个数的逆序为:"); while(num / 10 > 0){ n++; int tmp = num % 10; System.out.print(tmp); num /= 10; } System.out.println(num); System.out.println("这个数共有" + n + "位数"); } }

【程序25】

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

分析:能把一个数的各个位上的数拆出来就简单了。参考程序3(代码略)

【程序26】

题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

分析:你首先要知道星期一到星期天的英文单词,然后就是用switch 了

package logic; import java.util.Scanner; public class WeekDay { public static void main(String[] args) { Scanner in = new Scanner(System.in); char firstletter, secondletter; //存放第一第二个字母System.out.println("请输入第一字母"); String letter = in.next(); firstletter = letter.charAt(0); switch(firstletter){ case 'm': case 'M': System.out.println("是星期一");break; case 'w': case 'W': System.out.println("是星期三");break; case 'f': case 'F': System.out.println("是星期五");break; case 't': case 'T': System.out.println("仅由该字母无法判断出星期几,请输入第二个字母"); letter = in.next(); secondletter = letter.charAt(0); if(secondletter == 'u' || secondletter == 'U'){ System.out.println("是星期二"); break; }else if(secondletter == 'h' || secondletter == 'H'){ System.out.println("是星期四"); break; }else{ System.out.println("输入错误"); } case 's': case 'S': System.out.println("仅由该字母无法判断出星期几,请输入第二个字母"); letter = in.next(); secondletter = letter.charAt(0); if(secondletter == 'a' || secondletter == 'A'){ System.out.println("是星期六"); break; }else if(secondletter == 'u' || secondletter == 'U'){ System.out.println("是星期天"); break; }else{ System.out.println("输入错误"); } } } }

【程序27】

题目:求100之内的素数

分析:参考程序2

【程序28】

题目:对10个数进行排序

分析:有多种方法,参考java里的4种排序算法

【程序29】

题目:求一个3*3矩阵对角线元素之和

分析:用二维数组,难度不大

package logic; import java.util.Scanner; public class MatrixSum { public static void main(String[] args) { Scanner in = new Scanner(System.in); //输入数据int[][] mat = new int[3][3]; for(int i = 1; i <= 3; i++){ for(int j = 1; j <= 3; j++){ System.out.println("请输入第" + i + "行第" + j + "列的整数"); mat[i -1][j - 1] = in.nextInt(); } } //显示数据for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++) System.out.printf("%d\t",mat[i][j]); // \t是制表符System.out.println(); } //计算对角线元素和//从左上至右下的数归为主对角线,从左下至右上的数归为副对角线。int sum1 = mat[0][0] + mat[1][1] + mat[2][2]; int sum2 = mat[2][0] + mat[1][1] + mat[0][2]; System.out.println("主对角线上元素和为" + sum1); System.out.println("副对角线上元素和为" + sum2); } }

【程序30】

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

分析:类似插入排序,也还有其他方法

package logic; import java.util.Scanner; public class InsertNum { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[] ary = {10, 15, 20, 25, 30, 35, 40, 45, 50}; int[] changedAry = new int[ary.length + 1]; System.out.print("初始数组:"); for(int i = 0;

i < ary.length; i++){ changedAry[i] = ary[i]; System.out.print(ary[i] + " "); } System.out.println(); System.out.println("请输入一个整数"); int num = in.nextInt(); System.out.print("插入数字后的数组:"); insort(changedAry, num); } private static void insort(int[] changedAry, int num) { // TODO Auto-generated method stub for(int i = 0; i < changedAry.length; i++){ if(num < changedAry[i]){ //找到插入位置for(int j = changedAry.length - 1; j > i;j--){ changedAry[j] = changedAry[j - 1]; //待插入位置及以后的数后退一个位置} changedAry[i] = num; break; } } if(num > changedAry[changedAry.length - 1]) //待插入数大于所有数changedAry[changedAry.length - 1] = num; for(int k = 0; k < changedAry.length; k++) System.out.print(changedAry[k] + " "); } }

【程序31】

题目:将一个数组逆序输出。

分析:输出数组时从大下标开始就可以了

package logic; public class ReversedArray { public static void main(String[] args) { //这里直接初始化一个数组int[] ary = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // String[] ary = {"i", "love", "you"}; //字符(串)数组也可以System.out.print("数组初始顺序为:"); for(int i = 0; i < ary.length; i++) System.out.print(ary[i] + " "); System.out.println(); //换行System.out.print("数组的逆序为:"); for(int i = ary.length - 1; i >= 0; i--) System.out.print(ary[i] + " "); System.out.println(); } }

【程序32】

题目:取一个整数a从右端开始的4~7位。

分析:如果可以把这个整数转换为一个字符串就好解决了

package logic; import java.util.Scanner; public class SumR47 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个大于等于7 位的整数"); long sum = in.nextLong(); Long sum1 = new Long(sum); //Long是long 的包装类String sum2 = sum1.toString(); System.out.println(sum2.substring(sum2.length() - 7, sum2.length() - 3)); } // substring 截取两参数间的字符串}

【程序33】

题目:打印出杨辉三角形(要求打印出10行如下图)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

分析:用二维数组控制一下格式就可以了,先把所有的1 放到合适的位置,再放有规律的数,最后输出时控制格式

package logic; public class YanghuiTriangle { public static void main(String[] args) { int i, j; int[][] num = new int[10][10]; for (i = 0; i < 10; i++) {// 把所有的1 放入数组num[i][0] = 1; num[i][i] = 1; } for (i = 2; i < 10; i++) {// 计算数组的其他数for (j = 1; j < i; j++) { num[i][j] = num[i - 1][j - 1] + num[i - 1][j]; } } for (i = 0; i < 10; i++) { // k < 4 倍的空格是因为输出每个数字时用了4 个占位符for (int k = 0; k < 4 * (10 - i) / 2; k++)// 输出空格System.out.printf(" "); for (j = 0; j <= i; j++) { System.out.printf("%4d", num[i][j]); // 每个数字4 个占位符} System.out.println(); } } }

【程序34】

题目:输入3个数a,b,c,按大小顺序输出。

分析:参考程序15,代码略

【程序35】

题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

分析:先用循环找出最大、最小值,然后交换(数组依然是原来的样子,只是一头一尾被最值替换,这程序不知有何目地)

Ps:我一开始觉得是每从键盘输入一个数,比较数组中的所有数,最大的与第一个交换,最小的与最后一个交换,这样形成

的最终数组就是从大到小的顺序。可是数组的移动还是挺复杂的,就没有实现这个功能了。如果有哪个大神实现了,麻烦给我留言,谢谢

package logic; import java.util.Scanner; public class ArrayIO { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入数组长度"); int arylen = in.nextInt(); int[] num = new int[arylen]; for(int i = 0; i < num.length; i++) { System.out.printf("请输入第%d 个数:", i + 1); num[i] = in.nextInt(); } System.out.println("变化前的数组:"); outArray(num); //循环找出最大值、最小值int max = num[0]; int min = num[0]; for(int i = 1; i <

num.length; i++) { if(num[i] > max) max = num[i]; if(num[i] < min) min = num[i]; } //替换num[0] = max; num[num.length - 1] = min; System.out.println("变化后的数组:"); outArray(num); } private static void outArray(int[] num) { // TODO Auto-generated method stub for(int i = 0; i < num.length; i++) System.out.print(num[i] + " "); System.out.println(); } }

【程序36】

题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数分析:使前面多少个数字移动,取决于后面的条件。后移m 个位置后,我有两个理解(1)移动后的最后m 个数是移动前的最前面的m 个数。例:1,2,3,4,5 后移动2 个位置变成:3,4,5,1,2

(2)移动前的最后m 个数是移动后的最前面的m 个数例:1,2,3,4,5 后移动2 个位置变成:4,5,1,2,3

但是我感觉题目的意思是(2),移动前的变成为移动后的

package logic; import java.util.Scanner; public class SumChange { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[] num = {14, 32, 5, 42, 36, 80}; int[] temp = new int[num.length]; System.out.println("移动前的数组:"); for(int i = 0; i < num.length; i++){ temp[i] = num[i]; System.out.print(num[i] + " "); } System.out.println(); System.out.println("需要向后移动几个位置"); int m = in.nextInt(); for(int i = 0; i < num.length; i++){ int t = (i + m) % num.length; num[t] = temp[i]; //这行的t 和i 互换一下就变成了(1)} System.out.println("移动后的数组:"); for(int i: num) System.out.print(i + " "); System.out.println(); } }

【程序37】

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

分析:个人感觉这题还挺难的,不过网上有大神,很巧妙的实现,佩服原作者

package logic; import java.util.Arrays; import java.util.Scanner; public class Quit3 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入总人数。"); int num = in.nextInt(); boolean[] man = new boolean[num]; for(int i = 0; i < man.length; i++) { man[i] = true; } int t = 0, len = man.length; while(len > 1) { for(int i = 0; i < man.length; i++) { if(man[i]) { t++; if(t == 3) { t = 0; //重置man[i] = false; //去掉此人len--;

//人数减1 } } } } System.out.println("最后的情况:" + Arrays.toString(man)); for(int i = 0; i < man.length; i++) { if(man[i]) //最后留下来的人没有被flase { System.out.println("原来剩下的数:" + (i + 1)); //i + 1 是因为数组从0 开始} } } }

【程序38】

题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

分析:可以用String 类的length 方法么,没说不可以我就用了

package logic; import java.util.Scanner; public class LenOfStr { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个字符串"); String

str = in.next(); int len = lenOfstr(str); System.out.println(str + " 的长度为" + len); } private static int lenOfstr(String str) { // TODO Auto-generated method stub return str.length(); } }

【程序39】

题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)

分析:java 有指针么?似乎在看我们会不会定义函数

package logic; import java.util.Scanner; public class SumOfOddEven { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个整数"); int n = in.nextInt(); if(n % 2 == 0) System.out.println("1/2 + 1/4 + ... + 1/n = " + evenSum(n)); else System.out.println("1 + 1/3 + ... + 1/n = " + oddSum(n)); } private static float oddSum(int n) { // TODO Auto-generated method stub float sum = 0.0f; //记得用float 或double 型for(float i = 1.0f; i <= n;) { // i 用int 就会把结果也强转为int sum += 1 / i; i += 2; } return sum; } private static float evenSum(int n) { // TODO Auto-generated method stub float sum = 0.0f; for(float i = 2.0f; i <= n;) { sum += 1 / i; i += 2; } return sum; } }

【程序40】

题目:字符串排序。

分析:主要是字符串的比较,第一个相同,比第二个......(原来数组中有sort 方法)package logic; import java.util.Arrays; public class StrSort { public static void main(String[] args) { String[] strs = {"abfds1", "advesd2", "dasfdsa3", "cdsaew1", "abbdsa2", "abbdsa"}; //直接用了java 里有的sort 方法Arrays.sort(strs); for(String str : strs) { System.out.println(str); } } }

【程序41】

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。

第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,

问海滩上原来最少有多少个桃子?

分析:跟程序17 猴子吃桃是不是有类似的地方

package logic; public class DividePeach { public static void main(String[] args) { int num = 6; //

分五份多一个,至少6个while( true) { if(func(num)) { break; //找到答案,跳出循环} num++; } System.out.println("符合要求的最小数是:" + num); } //判断这个数是否能被分5次static boolean func(long n) { int i = 0; //被分次数0-4共5次while(i < 5 && n > 0) { if((n - 1) % 5 == 0) { long temp = (n - 1) / 5 + 1; n -= temp; //减去被一只猴子拿走和丢掉的i ++; } else return false; } return true; } }

【程序42】

题目:809*??=800*??+9*??+1

其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

分析:两位数就是10—99。。。。。经过自己验证,题目右边的+ 1 去掉才有答案。原题无解,可能题目传着传着就传错了

package logic; public class SeekNum { public static void main(String[] args) { for(int i = 10; i < 100; i++){ if(809 * i == 800 * i + 9 * i){ if(8 * i >= 10 && 8 * i < 100){ if(9 * i >= 100 && 9 * i < 1000){ System.out.println("?? 是" + i); System.out.println("?? * 809 = " + i * 809); } } } } } }

【程序43】

题目:求0—7所能组成的奇数个数。

分析:我认为这个题目没说明白,我觉得题目的意思应该是每个数字只出现一次吧。如果每个数字都可以出现多次,又没限制最多能有几位数,

那么这个奇数岂不是可以有无限个。

我也看了很多网友的答案,他们绝大部分人都认为每个数可以出现多次,而且这个数最大就是77777777,只能有8 位。

既然每个数可以重复,那么这个数为什么不能超过8 位,题目上没说啊。不知道你们是怎么理解的,难道是为理解错了?

不过我还是看到一个网友跟我的理解是一样的,他的实现方法我觉得很不错,参考过来,代码如下,已被我稍微优化。

package logic; public class Odd07 { public static void main(String[] args) { long total = 0L; //可以把76543210 变成10 或100 来检查该代码输出结果的正确性for(int i = 0; i <= 76543210; i++){ if(i % 2 == 0) { continue; } //把其中含有8 和9 的数去掉if((i + "").indexOf("8") != -1 || (i + "").indexOf("9") != -1){ continue; } total++; // System.out.println(i + " "); //输入每一个奇数} System.out.println("共有" + total + "个奇数"); } }

【程序44】

题目:一个偶数总能表示为两个素数之和。

分析:素数,又是素数,这题不难了吧

package logic; import java.util.Scanner; public class PrimeSum { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个大于等于4偶数。"); int num = in.nextInt(); if(num < 4) System.out.println("输入错误!"); if(num % 2 == 0) { int i , j; for(i = 2; i <= num /2; i++) { if(isPrime(i)) { j = num - i; if(isPrime(j)) System.out.println(num + " = " + i + " + " + j); } } } } public static boolean isPrime(int k) { for(int i = 2; i < Math.sqrt(k); i++) { if(k % i == 0) return false; } return true; } }

【程序45】

题目:判断一个素数能被几个9整除

分析:题目是什么意思。素数就是不能被1和自己以外的任何数整除,而几个9组成的数必然能被9整除,所以一定不是素数,题目好像有问题。

【程序46】

题目:两个字符串连接程序

分析:用“+”号不就行了么。(代码略)

【程序47】

题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

分析:主要是用到Random

package logic; import java.util.Random; public class Random7 { public static void main(String[] args) { Random rm = new Random(); for(int n = 0; n < 7; n++) { int i = rm.nextInt(50); //50以内的随机数System.out.print(i + " : "); for(int m = 0; m < i; m++) { System.out.print("*"); } System.out.println(); } } }

【程序48】

题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用

和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

分析:又是拆数字,每位数字加上5 的和除以10 的余数替换该数

package logic; import java.util.Scanner; public class NumEncrypt { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个四位整数"); int num = in.nextInt(); System.out.println("加密后数据为:" + encrypt(num)); } private static int encrypt(int num) { // TODO Auto-generated method stub int a, b, c, d; //从左到右分别为第一到第四位//分解a = num / 1000; b = (num / 100) % 10; c = (num / 10) % 10; d = num % 10; //取余a = (a + 5) % 10; b = (b + 5) % 10; c = (c + 5) % 10; d = (d + 5) % 10; //交换,其实这里只要换一下重组会整数的顺序就行了num = d *1000 + c * 100 + b * 10 + a; return num; } }

【程序49】

题目:计算字符串中子串出现的次数

分析:这里是要用正则表达式么

package logic; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class FindStr { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个字符串"); String sen = in.next(); System.out.println("请输入要查找的子字符串"); String str = in.next(); /* //一般方法int count = 0; int start = 0; while (sen.indexOf(str, start) >= 0 && start < sen.length()) { count++; start = sen.indexOf(str, start) + str.length(); }*/ //正则表达式第二个参数为忽略大小写Pattern p = https://www.360docs.net/doc/284840624.html,pile(str, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(sen); int count = 0; while(m.find()){ count ++; } System.out.println(str + "在" + sen + "出现的次数为" + count); } }

【程序50】

题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,

三门课成绩),计算出平均成绩,

况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

分析:数据要怎么输出到文件

package logic; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.Scanner; public class AvgOfStu { public static void main(String[] args) { Scanner in = new Scanner(System.in); String[][] stu = new String[2][6]; //为了快速测试,5个同学变成了2个同学for(int i = 0; i < 2; i++){ System.out.printf("请输入第%d个学生的姓名", i + 1); stu[i][0] = in.next(); System.out.printf("请输入第%d个学生第学号", i + 1); stu[i][1] = in.next(); for(int j = 2; j < 5; j++){ System.out.printf("请输入该同学的第%d门课程成绩", j - 1); stu[i][j] = in.next(); } } for(int i = 0; i < 2; i++){ int sum = 0; for(int j = 2; j < 5; j++){ sum += Integer.parseInt(stu[i][j]); } stu[i][5] = Float.toString((float)sum / 3); } String s; try{ File file = new File("/home/xiaogenfa/stu"); //要存放的路径if(file.exists()){ System.out.println("文件存在"); } else{ System.out.println("文件不存在,正在创建...."); file.createNewFile(); } BufferedWriter output = new BufferedWriter(new FileWriter(file)); for(int i = 0; i < 2; i++){ for(int j = 0; j < 6; j++){ s = stu[i][j] + "\r\t"; output.write(s); // System.out.print(stu[i][j]); //被注释的这三行用来格式化输出到控制台(屏幕)// System.out.printf("\t", ""); } // System.out.println(); } output.close(); System.out.println("数据已写入"); }catch(Exception e){ e.printStackTrace(); } } }

该程序的把数据存到文件的代码我是看别人,曾想把存储到文件的数据的格式控制成类似表格,但折腾了几次好像没办法弄好。将就一下就这样了。不过直接输出到控制台的还是可以控制的,见被注释的三行。输出到控制台时记得把输出到文件的相关代码注释掉。最后,希望能学到点东西。

Java经典试题

1. public class ReturnIt{ returnType methodA(byte x, double y){ //line 2 return (short)x/y*2; } } what is valid returnType for methodA in line 2? 答案:返回double类型,因为(short)x将byte类型强制转换为short类型,与double类型运算,将会提升为double类型. 2. 1) class Super{ 2) public float getNum(){return 3.0f;} 3) } 4) 5) public class Sub extends Super{ 6) 7) } which method, placed at line 6, will cause a compiler error? A. public float getNum(){return 4.0f;} B. public void getNum(){} C. public void getNum(double d){} D. public double getNum(float d){return 4.0d;} Answer:B A属于方法的重写(重写只存在于继承关系中),因为修饰符和参数列表都一样.B出现编译错误,如下: Sub.java:6: Sub 中的getNum() 无法覆盖Super 中的getNum();正在尝试使用不 兼容的返回类型 找到:void 需要:float public void getNum(){} ^ 1 错误 B既不是重写也不是重载,重写需要一样的返回值类型和参数列表,访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private); 重载:必须具有不同的参数列表; 可以有不同的返回类型,只要参数列表不同就可以了; 可以有不同的访问修饰符; 把其看做是重载,那么在java中是不能以返回值来区分重载方法的,所以b不对. 3. public class IfTest{ public static void main(String args[]){ int x=3;

经典逻辑推理题附答案

经典逻辑推理题(你能做起几道)(附答案) 2008年12月27日星期六下午 11:32 一、 Q先生和S先生、 P先生在一起做游戏。 Q先生用两张小纸片,各写一个数。这两个数都是正整数,差数是1。他把一张纸片贴在S先生额头上,另一张贴在P先生额头上。于是,两个人只能看见对方额头上的数。 Q先生不断地问:你们谁能猜到自己头上的数吗? S先生说:“我猜不到。” P先生说:“我也猜不到。” S先生又说:“我还是猜不到。” P先生又说:“我也猜不到。” S先生仍然猜不到; P先生也猜不到。 S先生和P先生都已经三次猜不到了。 可是,到了第四次, S先生喊起来:“我知道了!” P先生也喊道:“我也知道了!” 问: S先生和P先生头上各是什么数? 二、 有一个牢房,有3个犯人关在其中。因为玻璃很厚,所以3个人只能互相看见,不能听到对方说话的声音。” 有一天,国王想了一个办法,给他们每个人头上都戴了一顶帽子,只叫他们知道帽 子的颜色不是白的就是黑的,不叫他们知道自己所戴帽子的是什么颜色的。在这种情况下,国王宣布两条如下:

1.谁能看到其他两个犯人戴的都是白帽子,就可以释放谁; 2.谁知道自己戴的是黑帽子,就释放谁。 其实,国王给他们戴的都是黑帽子。他们因为被绑,看不见自己罢了。于是他们3个 人互相盯着不说话。可是不久,心眼灵的A用推理的方法,认定自己戴的是黑帽子。您想,他是怎样推断的? 三、 有一个很古老的村子,这个村子的人分两种,红眼睛和蓝眼睛,这两种人并没有什 么不同,小孩在没生出来之前,没人知道他是什么颜色的眼睛,这个村子中间有一个广场,是村民们聚集的地方,现在这个村子只有三个人,分 住三处。在这个村子,有一个规定,就是如果一个人能知道自己眼睛的颜色并且在晚上自杀的话,他就会升入天堂,这三个人不能够用语言告诉对方眼睛的颜色,也不能用任何方式提示对方的眼睛是什么颜色,而且也不能用镜子, 水等一切有反光的物质来看到自己眼睛的颜色,当然,他们不是瞎子,他们能看到对方的眼睛,但就是不能告诉他!他们只能用思想来思考,于是他们每天就一大早来到广场上,面对面的傻坐着,想自己眼睛的颜色,一天天过去了 ,一点进展也没有,直到有一天,来了一个外地人,他到广场上说了一句话,改变了他们的命运,他说,你们之中至少有一个人的眼睛是红色的。说完就走了。这三个人听了之后,又面对面的坐到晚上才回去睡觉,第二天,他们又 来到广场,又坐了一天。当天晚上,就有两个人成功的自杀了!第三天,当最后一个人来到广场,看到那两个人没来,知道他们成功的自杀了,于是他也回去,当天晚上,也成功的自杀了! 根据以上,请说出三个人的眼睛的颜色,并能够说出推理过程!

JAVA面试经典题(必看32题)易错知识点

第一,谈谈final, finally, finalize的区别。 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的类变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。局部变量声明时可以不赋值,生命周期内只能赋值一次。被声明为final的方法也同样只能使用,不能重写(子类覆盖),可以重载。 finally—异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入finally 块(如果有的话)。finally 语句总会被执行,如果遇到return的话,就先跑去执行finally,再return finalize—方法名。Java 技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 匿名类在实现时,必须借助一个类或一个接口,若从这个层次说它是可以继承一个类或一个接口的。但是通过extends implements关键字那是不可能的。一个内部类可以作为一个接口由另一个内部类实现。 在使用匿名内部类时,要记住以下几个原则: ·匿名内部类不能有构造方法。 ·匿名内部类不能定义任何静态成员、方法和类。 ·匿名内部类不能是public,protected,private,static。 ·只能创建匿名内部类的一个实例。 ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。 ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。 第三,Static Nested Class 和Inner Class的不同,说得越多越好(面试题有的很笼统)。 Nested Class 一般是C++的说法,Inner Class 一般是JAVA的说法。 Nested class分为静态Static nested class 的和非静态的inner class, 静态的Static nested class是不可以直接调用它的外部类enclosing class的,但是可以通过外部类的引用来调用,就像你在一个类中写了main方法一样。 非静态类inner class 可以自由的引用外部类的属性和方法,但是它与一个实例绑定在了一起,不可以定义静态的属性、方法。 Inner Class(内部类)定义在类中的类。 Nested Class(嵌套类)是静态(static)内部类。1. 要创建嵌套类的对象,并不需要其外围类的对象。2. 不能从嵌套类的对象中访问非静态的外围类对象。 Anonymous Inner Class (匿名内部类)匿名的内部类是没有名字的内部类。

最新经典图像逻辑题50题

经典逻辑题目 第1道C 本題所有圖形均為左右對稱的 將左邊的一半去掉,剩下的右半邊依次為數字1234 據此,可知後面為5。 第2题A 解析:去异存同 前图为:第一个图形与第二个图形重合,相同部分余下. 第二套图也如此.

第3题C 横着看三个图为一列 把外切小黑圆看成+,把内切小黑圆看成- 每一列都是图1和图2通过上面的算法和规律推出第3个图 第4题C 第一套图是逆时间转,每转90度加下面+一横 第二套图是从有小圆的90度扇形,开始逆时间旋转,每旋转一次,原有小圆的90度扇形+一个小圆,其他的90度扇形也加一个圆。 同理第3个图是:再图2的基础上再转90度,也是每转一次原有小圆扇形再+一个小圆,其他地方也同样加一个小圆。 根据以上的规律,能符合此规律的只有C项

第5题C 异色相加为黑,同色相加为白 第6题B 解析:(方法一) 把内分割线,分割出来的两个图形分别算出其比划再组成这个图行总的笔划(重合的线段算为2划)。 根据这个规律:第一套图的笔划是:6,7,8 第二套图的笔划是:9,10,11 (方法二) 看内角的个数呈规律递增;第一套图:6,7,8 第二套图:9,10,11 第7道C 第一套图的3个图的阴影部分可以组成一个全阴影图形

同理,第二套图的3个阴影部分也可以组成一个全阴影图形 第8道B 第一套是图内的3个原色不同,第二套是图内的3个原色相同,而且一一对应相似,两套图的3个图项的外框都是只有一个。 第9道B 根据第一套图和第二套图的各项图形方面不同,一一对应相似性, 第一套图:图1是左右对称,方位是左右。 图2是轴对称,方位是上下,左右;其对应相似性的图形是第二套图的图2。 图3是上下对称,其对称相似性的图形是第二套图的图1 那么现在就只有第一套图的图1没有对应关系,根据其左右对称的相似性只有B项符合,故答案为B 第10道B 若考虑把图2,图3,图4通过翻转、旋转、镜像,而组成图1,那么这样每个选项都可以。

公务员行测图形推理精选50题

1. A B C D 2 A B C D 3 A B C D 4. A B C D 5 A B C D 66. A[解析]仔细观察图形,发现第一套图的各个图形都可以由一笔画成,根据这个规

律可知正确答案是A。 67. D[解析]第一组图和第二组图特征相似: 实心与实心用实线连接 空心与空心用虚线连接 实心与空心不连接, 故本题正确答案为D。 68. A[解析]第一组图和第二组图特征相似,图形中 实线+实线=实线 虚线+虚线=实线 实线+虚线=虚线, 根据此规律,本题正确答案为A。 69. A[解析]第1个图形与第2个图形叠加后为第三个图形。本题正确答案为A。 70. A[解析]图形外部沿顺时针旋转90°,图形内部沿顺时针旋转90°,本题正确答案为A。 6 A B C D 7. A B C D 8. A B C D 9.

A B C D 10. A B C D 71. D[解析]图中第一、三个图形只有一条对称轴,第二、四个图形有两条或两 条以上对称轴,根据这一规律,第五个图形也应只有一条对称轴。答案选择D。 72. C[解析]在这组图中,五个图形呈现出以第三个图形为中心,轴对称的规律, 在选择正确答案时要注意图形中阴影的变化。本题正确答案为C。 73. C[解析]已知图形都是由相同元素构成的,依此规律,本题正确答案为C。 74. B[解析]根据已知图形可知,四种元素的重量关系是>>>。故本题 正确答案为B。 75. D[解析]此题按照常规思路寻找规律,似乎没有什么头绪,但仔细观察可发 现4个图形中的两部分黑点数相加等于另一部分,依此规律,本题正确答案为D。 11 A B C D 12. A B C D

java经典面试题汇总

Java基础方面: 1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√ × friendly √√ × × private √ × × × 不写时默认为friendly 2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现 3、Static Nested Class 和 Inner Class的不同 答:Nested Class (一般是C++的说法),Inner Class (一般是JA V A的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4、&和&&的区别 答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5、Collection 和 Collections的区别 答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 6、什么时候用assert 答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的 7、String s = new String("xyz");创建了几个String Object 答:两个,一个字符对象,一个字符对象引用对象 8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少 答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor 9、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错 答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译) 10、Java有没有goto 答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法 答:数组没有length()这个方法,有length的属性。String有有length()这个方法 12、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型

经典逻辑思维训练题(25题,带答案)

经典逻辑思维训练题(25题,带答案) 快去训练一下你的大脑的逻辑思维能力吧!1.世界级的马拉松选手每天跑步不超过6公里。 因此,如果一名选手每天跑步超过6公里,它就不是一名世界级马拉松选手。 以下哪项与上文推理方法相同?(A)跳远运动员每天早晨跑步。 如果早晨有人跑步,则他不是跳远运动员。 (B)如果每日只睡4小时,对身体不利。 研究表明,最有价值的睡眠都发生在入睡后第5小时。 (C)家长和小孩做游戏时,小孩更高兴。 因此,家长应该多做游戏。 (D)如果某汽车早晨能起动,则晚上也可能起动。 我们的车早晨通常能启动,同样,它晚上通常也能启动。 (E)油漆三小时之内都不干。 如果某涂料在三小时内干了,则不是油漆。 2.19世纪有一位英国改革家说,每一个勤劳的农夫,都至少拥有两头牛。 那些没有牛的,通常是好吃懒做的人。 因此它的改革方式便是国家给每一个没有牛的农夫两头牛,这样整个国家就没有好吃懒做的人了。 这位改革家明显犯了一个逻辑错误。

下列选项哪个与该错误相类似?(A)天下雨,地上湿。 现在天不下雨,所以地也不湿。 (B)这是一本好书,因为它的作者曾获诺贝尔奖。 (C)你是一个犯过罪的人,有什么资格说我不懂哲学?(D)因为他躺在床上,所以他病了。 3.有一天,某一珠宝店被盗走了一块贵重的钻石。 经侦破,查明作案人肯定在甲、乙、丙、丁之中。 于是,对这四个重大嫌疑犯进行审讯。 审讯所得到的口供如下:甲:我不是作案的。 乙:丁是罪犯。 丙:乙是盗窃这块钻石的罪犯。 丁:作案的不是我。 经查实:这四个人的口供中只有一个是假的。 那么,以下哪项才是正确的破案结果?(A)甲作案。 (B)乙作案。 (C)丙作案。 (D)丁作案。 (E)甲、乙、丙、丁共同作案。 4.古代一位国王和他的张、王、李、赵、钱五位将军一同出外打猎,各人的箭上都刻有自己的姓氏。 打猎中,一只鹿中箭倒下,但不知是何人所射。

行测:图形推理题50道详解

图形推理解题50项思路公务员必考 1.大小变化 2.方向旋转 3.笔画增减(数字,线条数) 4.图形求同 5.相同部份去掉 6.图形叠加(简单叠加,合并叠加,去同叠加) 7.图形组合变化(如:首尾两个图形中都包含中间图形) 8.对应位置阴影变化(两图相同或不同则第三图对应位置变阴影或变空白) 9.顺时针或逆时针旋转 10.总笔画成等差数列 11.由内向外逐步包含 12.相同部件,上下,左右组合 13.类似组合(如平行,图形个数一样等) 14.横竖线条之比有规律(如横线3条竖线4条,横线4条竖线5条等) 15.缺口相似或变化趋势相似(如逐步远离或靠近) 16.图形运动变化(同一个图形从各个角度看的不同样子) 17.图形拆分(有三个图构成,后两个图为第一个图的构成部件) 18.线条交点数有规律 19.方向规律(上,下,左,右) 20.相隔一个图形分别对称(如:以第三个图为中心,1和5对称,2和4对称) 21.含义依据条件而变(如一个错号,可以表"划",也可以表示"两划") 22.图形趋势明显(点或图形从左到右,从上到下变化等) 23.图形的上,中,下部分分别变化(求同,重叠,或去同叠加) 24.相似类(包含,平行,覆盖,相交,不同图形组成,含同一图形等) 25.上,中,下各部分别翻转变化 26.角的度数有规律 27.阴影重合变空白 28.翻转,叠加,再翻转 30.与特定线的交点数相同(如:与折线的交点数有规律,有直线的交点数不用考虑) 31.图形有多条对称轴,且有共同交点,轴对称图形(如正三角形,正方形) 32.平行,上下移动

33.图形翻转对称 34.图形边上角的个数增多或减少 35.不同图形叠加形成新图 36.图形中某条线均为长线或短线(寻找共同部分) 37.线段间距离共性.(如:直线上有几个点,分成几条线段,上部覆盖有另一个图形,如圆,三角形等,但是上面的图形占的位置都不大于最外面两点间的距离) 38.图形外围,内部分别顺或逆时针旋转(内外部变化相反) 39.特殊位置变化有规律(如当水平时,垂直时图形有一规律) 40.各图形组成部件属于同一类(如:均为三条曲线相交) 41.以第几幅图为中心进行变化(如:旋转,走近,相反等) 42.求共同部分再加点变化(如:提出共同部分,然后让共同部分都变黑什么的) 43.除去共同部分有规律 44.数线段出头数,有规律(成等差数列,或有明显规律) 45.图形每行空间数相同 46.以中间图形为中心,上下,对角分别成对称 47.先递增再递减规律 48.整套图形横着看,或竖着看,分别有规律. 49.注意考虑图形部分变化(如:分别为上下不变中间变化,然后上中下一起变化,左右分别变化,左右一起变化等) 50.顺着次序变化.(如:原来在内部的放大变为外部图形,内部图形相应变化.左右组成的图,上一个右边图等于下个左边图,右边再加个新图,如此循环) 1.大小变化

Java经典编程题50道

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下 的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\n'. 【程序8】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加), 几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 【程序9】

50道经典逻辑题及答案

一、逻辑判断:每题给出一段述,这段述被假设是正确的,不容置疑的。要求你根据这段述,选择一个答案。注意,正确的答案应与所给的述相符合,不需要任何附加说明即可以从述 中直接推出 1.以下是一则广告:就瘘痛而言,四分之三的医院都会给病人使用"诺维克斯"镇痛剂。因此,你想 最有效地镇瘘痛,请选择"诺维克斯"。以下哪项如果为真,最强地削弱该广告的论点?( ) A.一些名牌的镇痛剂除了减少瘘痛外,还可减少其他的疼痛 B.许多通常不用"诺维克斯"的医院,对那些不适应医院常用药的人,也用"诺维克斯" C.许多药物制造商,以他们愿意提供的最低价格,销售这些产品给医院,从而增加他们产品的 销售额 D.和其他名牌的镇痛剂不一样,没有医生的处方,也可以在药店里买到"诺维克斯" 正确答案:C 2.会骑自行车的人比不会骑自行车的人学骑三轮车更困难。由于习惯于骑自行车,会骑自行车的人 在骑三轮车转弯时,对保持平衡没有足够的重视。据此可知骑自行车( )。 A.比骑三轮车省力 B.比三轮车更让人欢迎 C.转弯时比骑三轮车更容易保持平衡 D.比骑三轮车容易上坡 正确答案:C 解题思路:题干已知,不会骑自行车的人反而比会骑的人更容易学习骑三轮车,原因 是骑三轮车在转弯时需要更多地控制平衡,由此可以推断出选项C为正确答案,选项A、B、D与题干 无关。故选C。 3.长久以来认为,高水平的睾丸激素荷尔蒙是男性心脏病发作的主要原因。然而,这个观点不可能 正确,因为有心脏病的男性一般比没有心脏病的男性有显著低水平的睾丸激素。上面的论述是基于 下列哪一个假设的?( )。 A.从未患过心脏病的许多男性通常有低水平的睾丸激素 B.患心脏病不会显著降低男性的睾丸激素水平 C.除了睾丸激素以外的荷尔蒙水平显著影响一个人患心脏病的可能性 D.男性的心脏病和降低睾丸激素是一个相同原因的结果 正确答案:B 解题思路:题干推理过程为:有心脏病的男性的睾丸激素水平低于无心脏病的,所以高水平的睾丸激素荷尔蒙不是男性心脏病发作的主要原因。这里忽略了一个前提,即得了心脏病以后会不会降低原有的睾丸激素,如会,则推理不成立,如不会,则推理成立,所以答案为B。 4.某大学工会在三八妇女节组织卡拉OK大赛,关于外语学院由哪些人来参加比赛,领导已商定出以下意见:(1)如果林红参加,则小萍也参加; (2)如果许丹不参加,则颖参加; (3)

公务员题目《图形推理》练习题

公务员题目《图形推理》练习题

————————————————————————————————作者:————————————————————————————————日期:

1. 以下哪一个图形是由左边的四个图形不经旋转、翻转直接拼接而成的? A.如图所示 B.如图所示 C.如图所示 D.如图所示 B。以最大的第二幅图为主图,第一幅的三角拼接在右上角,第三幅拼接在左上角,第一幅拼接在右下角。因此,该题选B。 2. 左边给定的是纸盒的外表面,下列哪一项能由它折叠而成() A.A B.B C.C D.D A。箭头面与“T”面、“N”面与圆圈面为相对面,排除C、D两项。B项顶面的“T”应逆时针旋转90度。A项正确。 3.

. A.如上图 B.如上图 C.如上图 D.如上图 A。题干中第一和第八位的图一样,第二和第五位的图一样,第三和第七位的图一样,第四和第六位的图一样,符合此规律的只有A。 4. 从所给的四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律( ) A.A B.B C.C D.D C。从九宫格的中心图形出发,发现中心图形的小三角数量等于其水平、竖直、对角线方向的另外两个图形的小三角形数量之和,因此问号处图形的小三角形数量为5(中间图形的9个减去左上角图形的4个),只有C项符合。 5. . A.A B.B C.C D.D B。第一组图均可以一笔画成,B项符合此规律。 6.

下列选项中,符合所给图形的变化规律的是() A.如上图A所示 B.如上图B所示 C.如上图C所示 D.如上图D所示 B。首先整个图形顺时针旋转90度,然后黑色部分顺时针移动一格。 7. .? A.A B.B C.C D.D D。每组第一个图形上下翻转得到第二个图形,第二个图形顺时针旋转90度得到第三个图形。故选D项。8. 下列选项中,符合所给图形变化规律的是( )

java经典试题 (2)

试题练习: 阅读下面程序: public class Cycle { public static void main(String args[]) { System.out.println(args[0]); } } 在命令行中输入java Cycle one two,该程序输出结果是___。 A.Cycle B.one C.two D.上述A、B、C均不对 下列关键字中可以表示常量的是___。 A.final B.default C.private D.transient 在Java Applet程序用户自定义的Applet子类中,常常重载___方法在Applet的界面中显示文字、图形和其它界面元素。 A.start() B.stop() C.init() D. paint() StringBuffer类字符串对象的长度是___。 A.固定B.必须小于16个字符C.可变D.必须大于16个字符 下列语句中哪个是正确的语句___。 A.RandomAccessFile raf = new RandomAccessFile("myfile.txt","rw"); B.RandomAccessFile raf = new RandomAccessFile(new DataInputStream()); C.RandomAccessFile raf = new RandomAccessFile(new File("myfile.txt")); D.RandomAccessFile raf = new RandomAccessFile("myfile.txt"); 如果在子类中使用被子类隐藏的父类的成员变量或方法,应使用关键字___。 A.this B.class C.super D.super class MouseEvent对应的是___。 A.键盘事件B.窗口事件C.按钮事件D.鼠标事件 运行下列程序,会产生什么结果是___。 public class X extends Thread implements Runnable { public void run() { System.out.println("this is run()"); } public static void main(String args[]) { Thread t=new Thread(new X()); t.start(); }

逻辑题 大公司面试常考的题 目

1 一个小猴子边上有100根香蕉,它要走过50米才能到家,每次它最多搬50根香蕉,(多了就被压死了),它每走1米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。 解: 前面每前进1米,就要3趟,也就是吃掉3个香蕉,走到第16米时吃了48个,再走2/3米,又吃掉两个,剩余50个。在剩下的33又1/3米路程里,再吃掉33个,最后1/3米不吃。所以最多可剩余17个。 2 每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机),一箱油可供一架飞机绕地球飞半圈。 问:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机? (所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场) 答案:5架 解法: 假设飞机相互加油不用时间,地球自转的影响也忽略不计!!! 1) 先让三架飞机出行(自东向西),当飞到1/8圈时,三架飞机油箱里都只剩下3/4的油了,这时让一架飞机把另两架飞机的油加满,然后返航! 2) 当这两架飞到1/4圈时,这两架飞机油箱里也是只剩下3/4的油了,这时让一架飞机把另一架飞机的油加满,然后返航! 3) 这架飞机的油刚好能到3/4圈时没油(这时离机场只有1/4圈距离了),这时就要看地下操控中心了,计算好时间,先让一架飞机去接应(自西向东)! 4) 到离机场只有1/4圈距离时,刚好到那架飞机没油了,接应的飞机刚到,并且还有1/2油箱的油,每架飞机分一半 5) 两架飞机一起来到离机场只有1/8圈时,都没油了,又来了一个接应的飞机,油箱里还有3/4的油,三架飞机平分之并飞回机场 3 有4个女人要过一座桥。她们都站在桥的某一边,要让她们在17分钟内全部通过这座桥。这时是晚上。她们只有一个手电筒。最多只能让两个人同时过桥。不管是谁过桥,不管是一个人还是两个人,必须要带着手电筒。手电筒必须要传来传去,不能扔过去。每个女人过桥的速度不同,两个人的速度必须以较慢的那个人的速度过桥。 第一个女人:过桥需要1分钟; 第二个女人:过桥需要2分钟; 第三个女人:过桥需要5分钟;

java试题

专业 层次 学号 座号 姓名 装 订 线 java 试题 (101分 共120分钟) 适用专业:软件开发 (本试卷共 5 页) 题号 一 二 三 四 总分 得分 一、填空题(48分,每空2分) 1. Java 源程序文件编译后产生的文件称为__字节码___文件,其扩展名为 ____.class_____。 2. 布尔型常量有两个值,它们分别是__true_____、__false_______。 3. 若x = 5,y =10,则 x > y && x++ = = y - - 的逻辑值为__false_______。 4. 假若 int x=3;int y=(++x)*5;其执行结果: y= 20 。 5. do-while 语句与while 语句的区别在于先执行循环体中的语句再计算条件表达式, 所以do-while 语句的循环体至少被执行 1 次。 6.程序段 ... int s1=0,s2=0; for (int i=0, j=1; i<10&&j<10;i++,j++){ if(i>5) s1++; else s2--; j++; } ... 运行后,s1的值为__0__,s2的值为_-5_。 7. Java 的数据类型可以分为两大类: 基本数据类型 和 引用类型 。 8. 设x=2.5,a=7,y=4.7,算术表达式x+a%3*(int)(x+y)%2/4的值为:_2.5__。 9. switch(m){ case 0: System.out.println("case 0! "); case 1: System.out.println("case 1! "); break;

java50道经典逻辑题

題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 【程序1】 題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析:咋一看不知道如何下手,但是你在草稿纸上写写分析一下,就很快发现其中的规律了package logic; import java.util.Scanner; public class RabbitNum { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("你想知道前几个月的兔子的数量"); int month = in.nextInt(); int[] mon = new int[month]; if(month < 3){ System.out.println("第" + month + "个月有1 对兔子,共2 只"); } else for(int i = 2; i < month; i++){ mon[0] = mon[1] = 1; mon[i] = mon[i - 1] + mon[i - 2]; System.out.printf("第%d 个月有%d 对兔子,共%d 只兔子\n", i + 1, mon[i], 2 * mon[i]); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 分析:如果知道素数是什么,该题就应该不难了 package logic; public class Prime { public static void main(String[] args) { System.out.print("101--200中的素数有:"); for(int i = 101; i <= 200; i++){ if(isPrime(i)) System.out.print(" " + i); } } //isPrime方法用来判断一个数是否是素数private static boolean isPrime(int i) { // TODO Auto-generated method stub for(int j = 2; j <= Math.sqrt(i); j++){ if(i % j == 0) return false; } return true; } } 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 分析:解决这个题目主要要知道怎么把一个数的各个位上的数拆分出来 package logic; import java.util.Scanner; public class NarcissisticNum { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("水仙花数有:"); for(int num = 100; num < 1000; num++){ if(isNarcissisticNum(num)) System.out.println(" " + num); } } //一个判断正整数是否为水仙花数的方法private static boolean isNarcissisticNum(int num) { // TODO Auto-generated method stub int a = num / 100; //分离出百位a int b = (num / 10) % 10; //分离出十位b int c = num % 10; //分离出个位 c int sum = a * a * a + b * b * b + c * c * c; if(sum == num) return true; else return false; } } 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 分析:按步骤实现就可以了(有多种实现方式,以下代码供参考。我也参考了别人的)package logic; import java.util.Scanner; public class PrimeFactorOfInteger { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个

图形逻辑题35个

图形逻辑题35个请从理论上或逻辑的角度在后面的空格中填入后续字母或数字; 1.A, D, G, J 2.1, 3, 6, 10 3.1, 1, 2, 3, 5 4.21, 20, 18, 15, 11 5.8, 6, 7, 5, 6, 4 6.65536, 256, 16 7.1, 0, -1, 0 8.3968, 63, 8, 3 请从右边的图形中选择一个正确的(a,b,c,d)填入左边的空白处 9. a b c d 10. a b c d 11. a b c d

12. a b c d 13. a b c d 14. a b c d 15. a b c d 从右边的列(A B C D)中选择图形,以满足左边的图形安照逻辑角度能正确排列下来。 16.-------------------------------

17. A B C D 18. A B C D 19. A B C D 20. A B C D 21. A B C D 22. A B C D 23. A B C D 24. A B C D 25. A B C D 26. A B C D

在左边的四个图形中缺少两个图形,请从右边的一组图形(a b c d e) 中选出两个填入左边以使左边的图形从逻辑角度上能成双配对 27.1. a b c d e 28.2. a b c d e 29.3. a b c d e 30.4. a b c d e 在下列题目中每一行都缺少一个图,请从右边选择一个(a b c d) 插入左边图形中以使左边的图形从逻辑角度上能成双配对 31. a b c d 32. a b c d 33. a b c d 34. a b c d 部分答案,可能有误: 1-M 2 -15 3-8 4-6 5-5 7-1 8-2 9-b 10-d 11-c 12-a 13-c 14-d 15-c 16-c 17-b 18-c 19-d 20-d 21 -c 22-c 23-d 24-b 25-a 26-ad 27-bc 28-ce 29-bd 30-d 31-c 32-d 33-c

Java经典练习题

Java基础试题 一、选择题 1.编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. .java B. .class C. .html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5 3、main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的(B)? A、public static void main() B、public static void main(String args[] ) C、public static int main(String [] arg ) D、public void main(String arg[] )4 4.Which of the following is not a valid comment:D a. /** comment */ b. /* comment */ c. /* comment d. // comment 5. Java中char类型的数据长度为 :C (A)8位(B)16位(C)32位(D)64位 6.下面哪个表达式是错误的:B (A)int i = 100; (B)float f = 100.0; (C)Object o = “Hello world”; (D)char c = ‘\u1234’; 7.下面哪个语句是正确的:C (A)byte s = 256; (B)String s = ‘Hello world’; (C)int x = 012; (D)char c = “a”; 8.下列叙述中,正确的是:A A)声明变量时必须指定一个类型 B)Java认为变量number与Number相同 C)Java中唯一的注释方式是"//" D)源文件中public类可以有0或多个 9.下列属于合法的Java标识符是:D A)"ABC" B)&5678 C)+rriwo D)saler 10.下面哪个标识符是不合法的:D (A)s1 (B)$1 (C)_1 (D)1s 11.在switch(expression)语句中,expression的数据类型不能是:A A)double B)char C)byte D)short 12.已知:int[] a = new int[100];在下列给出的数组元素中,非法的是:D A)a[0] B)a[1] C)a[99] D)a[100] 13.下列的哪个赋值语句是不正确的?: A A.float f = 11.1; B.double d = 5.3E12;

相关文档
最新文档