java50道经典逻辑题
JAVA经典算法50题(3)【面试+工作】

JAVA经典算法50题(3)【面试+工作】JAVA经典算法50题(3)【面试+工作】【程序21】题目:求1+2!+3!+...+20!的和。
1.程序分析:此程序只是把累加变成了累乘。
public class Demo21 {public static void main(String[] args) {long sum = 0;long fac = 1;for (int i = 1; i <= 20; i++) {fac = fac * i;sum += fac;}System.out.println(sum);}}【程序22】题目:利用递归方法求5!。
1.程序分析:递归公式:f(n)=f(n-1)*4!import java.util.Scanner;public class Demo22 {public static long fac(int n) {long value = 0;if (n == 1 || n == 0) {value = 1;} else if (n > 1) {value = n * fac(n - 1);}return value;}public static void main(String[] args) {System.out.println("请输入一个数:");Scanner in = new Scanner(System.in);int n = in.nextInt();System.out.println(n + "的阶乘为:" + fac(n));}}【程序23】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。
问第4个人岁数,他说比第3个人大2岁。
问第三个人,又说比第2人大两岁。
问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。
请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。
java基础50道经典练习题及答案

java基础50道经典练习题及答案《Java基础50道经典练习题及答案》Java作为一种广泛应用于软件开发的编程语言,对于初学者来说,掌握其基础知识是非常重要的。
为了帮助大家更好地学习和掌握Java基础知识,我们整理了50道经典的练习题及答案,希望能够帮助大家更好地理解和掌握Java编程。
1. 请写出Java中的8种基本数据类型。
2. 什么是Java中的包(package)?3. Java中的“==”和“equals()”有什么区别?4. 什么是Java中的多态(polymorphism)?5. 请写出Java中的四种访问修饰符及其作用。
6. 什么是Java中的接口(interface)?7. 请写出Java中的四种循环语句。
8. 什么是Java中的异常处理(exception handling)?9. Java中的“String”和“StringBuffer”有什么区别?10. 请写出Java中的三种注释方式。
这些练习题涵盖了Java基础知识的各个方面,包括数据类型、包、运算符、多态、访问修饰符、接口、循环语句、异常处理、字符串处理等内容。
通过做这些练习题,可以帮助大家更好地理解和掌握Java编程的基础知识。
在学习Java编程的过程中,不仅要掌握理论知识,还要多做练习,多动手实践。
只有通过实际操作,才能更好地理解和掌握Java编程的各种知识点。
希望大家能够认真对待这些练习题,多加练习,相信一定能够取得不错的成绩。
最后,希望大家在学习Java编程的过程中,保持耐心和坚持,相信通过不懈的努力,一定能够掌握好Java编程的基础知识,成为一名优秀的Java程序员。
祝大家学习进步,早日掌握Java编程!。
java逻辑推理题

以下是一个简单的逻辑推理题:
在一个岛上,有两位渔夫,分别叫做A 和B。
他们各自每天都会出海捕鱼。
这个岛的海洋里有两种鱼,分别叫做大鱼和小鱼。
现在的情况是:A 可以捕到大鱼,B 可以捕到小鱼。
但是,如果A 想捕到小鱼,他就需要B 的帮助;同样,如果B 想捕到大鱼,他也需要A 的帮助。
如果 A 和 B 都想改变他们每天的捕鱼种类(也就是说,A 想要每天捕小鱼,B 想要每天捕大鱼),那么他们应该如何做才能达到他们的目标呢?
提示:他们需要制定一个计划,按照这个计划轮流进行捕鱼。
java思维逻辑题

java思维逻辑题
1. 编写java程序,输出1到100的所有偶数。
2. 编写java程序,计算1到100的所有奇数的和。
3. 编写java程序,找出一个数组中的最大值。
4. 编写java程序,找出一个数组中的最小值。
5. 编写java程序,将一个整数数组按照从小到大的顺序进行排序。
6. 编写java程序,判断一个字符串是否是回文字符串(正着读和反着读都相同)。
7. 编写java程序,统计一个字符串中某个字符出现的次数。
8. 编写java程序,计算一个整数的阶乘。
9. 编写java程序,判断一个字符串是否是有效的邮箱地址。
10. 编写java程序,找出两个数组中的所有相同元素。
1/ 1。
java 逻辑题

java 逻辑题逻辑题是一种通过推理和思考来解决问题的问题类型。
Java是一种面向对象的编程语言,具有强大的编程能力和丰富的库函数。
在Java中,我们可以使用条件语句、循环语句以及逻辑运算符来解答逻辑题。
下面是一些关于Java逻辑题的参考内容。
1. 条件语句:条件语句是根据条件的真假来执行不同的代码块。
在Java中,主要有if语句和switch语句来实现条件判断。
(1)if语句示例:```int x = 10;if (x > 0) {System.out.println("x是正数");} else if (x < 0) {System.out.println("x是负数");} else {System.out.println("x是零");}```(2)switch语句示例:```int day = 3;String dayName;switch (day) {case 1:dayName = "星期一";break;case 2:dayName = "星期二";break;case 3:dayName = "星期三";break;case 4:dayName = "星期四";break;case 5:dayName = "星期五";break;default:dayName = "未知";break;}System.out.println("今天是" + dayName);```2. 循环语句:循环语句是根据条件来重复执行一段代码块。
在Java中,主要有for循环、while循环和do-while循环来实现循环结构。
(1)for循环示例:```for (int i = 1; i <= 10; i++) {System.out.println("当前数字:" + i);}```(2)while循环示例:```int i = 1;while (i <= 10) {System.out.println("当前数字:" + i);i++;}```(3)do-while循环示例:```int i = 1;do {System.out.println("当前数字:" + i);i++;} while (i <= 10);```3. 逻辑运算符:逻辑运算符用于结合多个布尔表达式的结果。
java基础50道经典练习题及答案

java基础50道经典练习题及答案Java基础50道经典练习题及答案Java作为一门广泛应用于软件开发领域的编程语言,其基础知识的掌握对于程序员来说至关重要。
为了帮助大家更好地理解和掌握Java的基础知识,下面将介绍50道经典的Java练习题及其答案。
1. 编写一个Java程序,打印输出"Hello, World!"。
```javapublic class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}}```2. 编写一个Java程序,计算并打印输出1到100之间所有偶数的和。
```javapublic class SumOfEvenNumbers {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}System.out.println("Sum of even numbers: " + sum);}}```3. 编写一个Java程序,判断一个整数是否为素数。
```javapublic class PrimeNumber {public static void main(String[] args) {int number = 17;boolean isPrime = true;for (int i = 2; i <= Math.sqrt(number); i++) {if (number % i == 0) {isPrime = false;break;}}if (isPrime) {System.out.println(number + " is a prime number.");} else {System.out.println(number + " is not a prime number."); }}```4. 编写一个Java程序,将一个字符串反转并输出。
java逻辑题

java逻辑题100道java经典逻辑题java逻辑题【1】假设有一个池塘,里面有无穷多的水。
现有2个空水壶,容积分别为5升和6升。
问题是如何只用这2个水壶从池塘里取得3升的水。
由满6向空5倒,剩1升,把这1升倒5里,然后6剩满,倒5里面,由于5里面有1升水,因此6只能向5倒4升水,然后将6剩余的2升,倒入空的5里面,再灌满6向5里倒3升,剩余3升。
【2】周雯的妈妈是豫林水泥厂的化验员。
一天,周雯来到化验室做作业。
做完后想出去玩。
"等等,妈妈还要考你一个题目,"她接着说,"你看这6只做化验用的玻璃杯,前面3只盛满了水,后面3只是空的。
你能只移动1只玻璃杯,就便盛满水的杯子和空杯子间隔起来吗?"爱动脑筋的周雯,是学校里有名的"小机灵",她只想了一会儿就做到了。
请你想想看,"小机灵"是怎样做的?设杯子编号为ABCDEF,ABC为满,DEF为空,把B中的水倒进E中即可。
【3】三个小伙子同时爱上了一个姑娘,为了决定他们谁能娶这个姑娘,他们决定用手枪进行一次决斗。
小李的命中率是30%,小黄比他好些,命中率是50%,最出色的枪手是小林,他从不失误,命中率是100%。
由于这个显而易见的事实,为公平起见,他们决定按这样的顺序:小李先开枪,小黄第二,小林最后。
然后这样循环,直到他们只剩下一个人。
那么这三个人中谁活下来的机会最大呢?他们都应该采取什么样的策略?小林在轮到自己且小黄没死的条件下必杀黄,再跟菜鸟李单挑。
所以黄在林没死的情况下必打林,否则自己必死。
小李经过计算比较(过程略),会决定自己先打小林。
于是经计算,小李有873/2600≈33.6%的生机;小黄有109/260≈41.9%的生机;小林有24.5%的生机。
哦,这样,那小李的第一枪会朝天开,以后当然是打敌人,谁活着打谁;小黄一如既往先打林,小林还是先干掉黄,冤家路窄啊!最后李,黄,林存活率约38:27:35;菜鸟活下来抱得美人归的几率大。
java逻辑思维编程题

java逻辑思维编程题当涉及到Java编程的逻辑思维题时,有许多不同的问题和情景可以讨论。
下面,我将从不同的角度给出一些常见的Java逻辑思维编程题的回答。
1. 反转字符串:编写一个Java程序,将给定的字符串进行反转。
可以使用StringBuilder或者字符数组来实现。
首先,将字符串转换为字符数组,然后使用双指针法从两端开始交换字符,直到达到中间位置。
2. 判断回文数:编写一个Java程序,判断一个给定的整数是否是回文数。
可以将整数转换为字符串,然后使用双指针法从两端开始比较字符,直到达到中间位置。
如果所有字符都匹配,则该整数是回文数。
3. 查找最大值和最小值:编写一个Java程序,从给定的整数数组中找到最大值和最小值。
可以使用两个变量来保存当前的最大值和最小值,然后遍历整个数组,逐个比较并更新最大值和最小值。
4. 斐波那契数列:编写一个Java程序,生成斐波那契数列的前n个数字。
可以使用循环或者递归来实现。
如果使用循环,可以使用两个变量来保存前两个数字,然后通过迭代生成后续的数字。
如果使用递归,可以编写一个递归函数来计算斐波那契数列。
5. 查找重复元素:编写一个Java程序,从给定的整数数组中查找重复的元素。
可以使用一个HashSet来存储已经访问过的元素,然后遍历整个数组,对于每个元素,如果HashSet中已经存在,则说明是重复元素。
6. 验证括号匹配:编写一个Java程序,验证一个给定的字符串中的括号是否匹配。
可以使用栈的数据结构来实现。
遍历字符串的每个字符,如果是左括号,则将其压入栈中;如果是右括号,则弹出栈顶元素并进行匹配。
最后,如果栈为空,则说明所有括号都匹配。
以上是一些常见的Java逻辑思维编程题的回答。
希望这些回答能够帮助到你。
如果你有其他问题,欢迎继续提问。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
題目:古典问题:有一对兔子,从出生后第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】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
分析:这题也比较简单,知道怎么表示字母、空格、数字就OKpackage 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是一个数字。