java编程题练习
2016-12-02 09:39
441 查看
/* * 字符串替换程序 * 将输入的字符串中空格替换成*号 * 将 ,(逗号替换成@符号) */ public class ReplaceBlanks { public static void main(String[] args) { String str = "Hello world hello,China" ; System.out.println(replaceBlanks(str)); } public static String replaceBlanks(String input) { if(input == null) { return null; } StringBuffer output = new StringBuffer(); for (int i = 0; i < input.length(); i++) { if(input.charAt(i) == ' ') { output.append("*"); } else if(input.charAt(i) ==',') { output.append("@"); } else { output.append(String.valueOf(input.charAt(i))); } } return new String(output); } }
————————————————————
/* * 一个二维数组,每一行从左到右递增,每一列从上到下递增。输入一个二维数组和一个整数, * 判断数组中是否包含这个整数 */ public class FindNumberInArray { //在二维数组中查找特定元素的方法 public static boolean findNumberInArray(int array[][] ,int number) { //如果数组为空 if(array == null) { return false; } int column=array[0].length-1;// 获得数组列下标上限 int row = 0; // 从第一行开始遍历 while(row<array.length && column>0) //array.length是数组的行数 { if(array[row][column] == number) return true; if(array[row][column] > number) column --; else row++; //遍历下一行 } return false; //都没有找到,返回false } //测试方法 public static void main(String[] args) { int < 4000 span class="hljs-built_in">array[][]= new int[4][4]; array[0][0] = 1; array[0][1] = 2; array[0][2] = 3; array[0][3] = 5; array[1][0] = 2; array[1][1] = 3; array[1][2] = 4; array[1][3] = 5; array[2][0] = 3; array[2][1] = 4; array[2][2] = 5; array[2][3] = 6; array[3][0] = 4; array[3][1] = 5; array[3][2] = 6; array[3][3] = 7; System.out.println(findNumberInArray(array, 6)); } }
/* * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序 * 所有奇数位于数组的前半部分,所有偶数位于数组后半部分 */ public class Order { //测试方法 public static void main(String[] args) { Order or= new Order(); int array[] ={2,4,1,4,5,67,5,3,2,34,4,5,5,3,33,2,2,2,4,6,76,8,87,6,65,90}; or.order(array); for (int i = 0; i < array.length; i++) { System.out.print(array[i]+" "); } } public void order(int[] array) { if(array == null && array.length == 0) return; int start = 0;//数组第一个元素的下标 int end = array.length - 1; //数组最后一个元素的下标 while(start < end) { //这个while循环从第一个元素开始检查这个数是不是偶数 while(start < end && !isEvenNumber(array[start])) //是奇数 { start++; //是奇数,就不交换,在原来的位置 } //这个while循环从最后一个元素开始检查这个数是不是偶数 while(start<end && isEvenNumber(array[end]))//是偶数 { end --; //是偶数,不用交换,接着检查下一个元素 } //否则执行交换 if(start< end) { int temp = array[start]; array[start] = array[end]; array[end] = temp; } } } //判断一个数是不是偶数的方法 public boolean isEvenNumber(int n) { return n % 2 == 0; } }
输入一个字符串,列出所有可能的组合。
import java.util.ArrayList; import java.util.List; public class StringList { public static void main(String[] args) { String s = "bcd"; //原来的字符串 List<String> result = list(s," "); //调用list方法 System.out.println(result.size()); System.out.println(result); } /* * 列出所有基础字符串的组合,放入result * base 以此字符串为基础字符串,进行选择性组合 * buff所求字符串临时结果 * result 存放结果 */ public static List<String> list(String base,String buf) { List<String> result = new ArrayList<>(); if(base.length() <=0) { result.add(buf); } for (int i = 0; i < base.length(); i++) { List<String> temp = list(new StringBuffer(base).deleteCharAt(i).toString(), buf+base.charAt(i)); result.addAll(temp); } return result; } }
——————————————————————
/* * 键盘输入一个字符串,并将其倒序输出来 */ import java.util.Scanner; public class ReverseString { public static void main(String[] args) { System.out.println("请输入一个字符串,本程序会将其倒序输出:"); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); //能够得到带空格的字符串 。nextLine()将回车作为终止符 //String str = sc.next(); 不能得到带空格的字符串 将回车 空格 tab键都作为终止符 System.out.println(reverseString(str)); } public static String reverseString(String str) { if(str == null)//输入字符串为空,则返回null { return null; } else { String result = ""; //存放结果的变量 for(int i = 0;i<str.length();i++) { //从字符串最后一个字符开始,依次得到每个字符,并将其加在结果变量后面 char temp = str.charAt(str.length()-1-i); result = result+temp; } return result; } } }
——————————————————————————————————————————————————
import java.util.Scanner; /* * 在数组里存放一组数据,通过键盘输入一个数,通过折半查找的方法确定输入的数是否在这个数组中 */ public class BinarySearch { //将全局变量设置为静态,就不用担心被其他文件使用 public static int array[] = {3,5,3,2,4,332,2,2,2,4,44,3,3,45,22,33,90,8,76,665,44,3,444,33,44,543,34,65}; public static int counter = 0;//用来记录查找到用的次数 public static int length = array.length; public static void main(String[] args) { System.out.println("请输入你要查找的数:"); Scanner sc= new Scanner(System.in); int keyValue = sc.nextInt(); BinarySearch bs = new BinarySearch(); boolean result = bs.binarySearch(keyValue); if(result) { System.out.println("使用折半查找:"+counter+"次才找到"); } else { System.out.println("没有找到数据"); } } //折半查找的方法 public static boolean binarySearch(int keyValue) { int left =0 ; //左边界 int right = length -1; // 右边界 int middle; //中间 while(left <= right) { //由于输入的数据可能不是有序的,所以需要使用冒泡排序先对其进行排序 for(int i = 0;i<length;i++) for(int j = 0;j<length- 11b78 1-i;j++) { if(array[j]>array[j+1]) { int temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } middle = (left+right) /2; if(keyValue < array[middle]) { right = middle-1;// 调整右边界 } else if(keyValue >array[middle]) { left=middle+1; //调整左边界 } else if(keyValue == array[middle]) //找到了 { System.out.println("找到了要查找的数!"); return true; } counter++; } return false; } }
————————————————————————————————
import java.util.HashSet; import java.util.Iterator; import java.util.Scanner; import java.util.Set; import javax.security.auth.Subject; /* * 输入一个字符串,统计每个字符出现的次数。 * 分析:一个字符串中同一个字符可能出现多次。 * 我们可以遍历字符串,并把字符存入set集合中。因为集合不能存放相同的元素 * 这样就可以得到字符的种类数 */ public class CountString { public static void main(String[] args) { System.out.println("请输入一个字符串,本程序会统计出每种字符出现的次数:"); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); //nextLine()可以得到空格,空格也要算作一种字符 //new 一个集合对象,用来存放字符的种类。因为set里面不能存放相同的元素 Set<String> set = new HashSet<String>(); //HashSet 可以存放null ;线程不安全 for(int i =0;i<str.length();i++) { //使用截取字符串的这个方法,其返回begin到end-1之间的字符串。 String s= str.substring(i, i+1);//也就是返回处于i位置的字符 set.add(s); //将得到的字符加入到集合中 }//循环完成后,就将所有不同种类的字符放入里集合中 Iterator it = set.iterator(); //遍历集合 while(it.hasNext()) //hasNext()方法 判断是否有下一个元素 { String s1= (String)it.next(); // next()返回下一个元素 int k =0; //用来存放某种字符的个数 for(int j =0;j<str.length();j++) if(s1.equals(str.substring(j,j+1))) { k++; } System.out.println(s1+"有"+k+"个"); } } }
———————————————————————————————————————————————
/* * 键盘输入一个字符串,然后按照字母表顺序对其进行排序 */ import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class StringSort { public static void main(String[] args) { System.out.println("请输入一个字符串,本程序将会安字母表排序后再输出来:"); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); List list = new ArrayList(); for(int i = 0;i<str.length();i++) { //截取每个字符。substring(begin.end)本来是截取benig到end-1的字串 //那么substring(i,i+1)就表示截取第i个字符 String s = str.substring(i, i+1); list.add(s); //将截取的字符放进集合再 } java.util.Collections.sort(list); //直接调用操作集合的工具类里的sort()方法 System.out.println(list); } }
/*
* 要求:判断101到200之间的数 x 有多少个素数。
* 素数(质数):只能被1和它本身整除的数成为素数。
* 方法1:让x依次被2,3,…m-1除。 可行,代价高
* 方法2:让x依次被2,3,…m/2除。可行,代价减少
* 方法3:让x依次被2,3…sqrt(x)除。sqrt(x)为x的平方根 最优方案。
*/
public class PrimeNumber
{
public static void main(String[] args)
{
int counter = 0;
for(int i = 101;i<200;i+=2) //偶数不用判断,肯定不是素数
{
boolean result = false;
for(int j= 2;j
import java.util.Scanner; /* * 求如: a+aa+aaa+aaaa+aaaaa ......的值,其中a是一个数字。例如2+22+222+2222+22222.... * 到底有几个数相加由键盘输入决定。 */ public class SumTest { public static void main(String[] args) { //需要三个变量 存储数字的变量 digit ; 存储项数的变量number 以及求和 sum. Scanner sc = new Scanner(System.in); System.out.println("请输入你想要计算的数字(0-9之间):"); int digit = sc.nextInt(); System.out.println("请输入你想要计算的项数:"); int number = sc.nextInt(); int sum = 0; for(int i =0;i<number;i++) { sum =sum+digit; digit = digit*10+digit; } System.out.println("求出和为"+sum); } } ————————————————————————
/*
* 一个数如果恰好等于它的所有因子之和,这个数就被成为完数 。例如 6=1+2+3.
* 编程找出1000以内的所有完数
*/
public class PerfectNumber
{
public static void main(String[] args) { System.out.println("本程序的目的是找出1000以内的完数,结果是:"); for(int i =1; i <1000;i++) { int sum = 0; //用来存储所有因子和的变量 for(int j =1;j <= i /2 ;j++) { if(i % j == 0) // 找出所有因子 { sum =sum+j; //将因子求和 } } if(sum ==i) // 比较所有因子和与i的大小 { System.out.print(i+" "); } } }
}
____________________________________________ /* * 有 1 2 3 4 四个数字,能组成多少个无重复数字的三位数。 * 打印出这些三位数 */ public class GroupNumber { public static void main(String[] args) { int count = 0; for(int a=1; a<5 ;a++) { for(int b=1;b<5;b++) { for(int c=1;c<5;c++) { if(a != b && a != c && b!=c ) { count ++; System.out.println(a*100 + b*10 + c); } } } } System.out.println("能够组成无重复数字的三位数个数为:"+count+"个"); } }
/* * 一个整数,当它加上100后是一个完全平方数,在加上168之后又是一个完全平方数 * 求这个整数 */ public class Integertest { public static void main(String[] args) { //这个整数的范围应该不会超过10000 for(int i =1;i<10000;i++) { if(Math.sqrt(i+100) % 1 ==0 && Math.sqrt(i+268) % 1==0) { System.out.println(i+"是一个完全平方数"); } } } }
——————————————————————————————————
import java.util.Scanner; /* * 输入三个整数 x y z ,再把这三个数按照从小到大输出。 */ public class SortNumber { public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("请输入第一个整数:"); int a = sc.nextInt(); System.out.println("请输入第二个整数:"); int b =sc.nextInt(); System.out.println("请输入第三个整数:"); int c = sc.nextInt(); if(a >b ) { int temp = a; a=b; b =temp; } if(a > c) { int temp =a; a=c; c =temp; } if(b > c) { int temp =c; c=b; b =temp; } System.out.println("三个数字由小到大为:"+ a+" "+b+" "+c); } }
————————————————————————————————
/* * 输出 9 * 9 乘法表 */ public class MultiplyTable { public static void main(String[] args) { for(int i= 1;i<10 ; i++) { for(int j =1;j<=i ;j++) { System.out.print(i+"*"+j+"="+i*j+" "); if(i*j<10) { System.out.print(" "); } } System.out.println(); } } }
————————————————————————————————————
/* * 有一组数列 2/1 3/2 5/3 8/5 13/8 21/ 23. * 求出这个数列的前20项之和 * */ public class Sum { public static void main(String[] args) { int x = 2; //分母 int y = 1; //分子 double sum =0; for(int i=1;i<=20;i++) { sum = sum + (double) x / y; int t = y; y= x; x = y+t; } System.out.println("前20项之和是:"+sum); } }
——————————————
import java.util.Scanner; /* * 输入任意一个数n,求 1! + 2! +3!+....+ n! =? */ public class Factorial { public static void main(String[] args) { System.out.println("请输入一个整数,本程序将会求出1!+2!+..+n! 的值:"); Scanner sc = new Scanner(System.in); Long number = sc.nextLong(); long sum =0; //求和的变量 long fac = 1 ; //每一项阶乘的变量 for(int i=1 ;i <= number; i++) { fac = fac * i; sum = sum+ fac; } System.out.println("阶乘的和为:"+sum); } } —————————————————————————————————————— import java.util.Scanner; /* * 输入一个不超过5位的正整数,求出这个数是几位数,并且将其逆序输出。 */ public class ReverseNumber { public static void main(String[] args) { System.out.println("请输入一个不超过5位的整数:"); Scanner sc = new Scanner(System.in); Long number = sc.nextLong(); //要计算出有多少位,可以将数字转换成字符串,再将字符串保存在字符数组里 String str = Long.toString(number); char[] ch = str.toCharArray(); System.out.println("这是一个"+ch.length+"位数"); //将其逆序输出 for(int i= ch.length-1;i>=0;i--) { System.out.print(ch[i]); } } }
————————————————————————
import java.awt.image.RescaleOp; import java.util.Scanner; /* * 输入一个数,判断其是不是回文数 * 即判断一个数第一位是否与最后一位相同;第二位是否和倒数第二位相同,依次类推 */ public class Palindrome { public static void main(String[] args) { System.out.println("请输入一个正整数,本程序可以判断其是否为回文数:"); Scanner sc = new Scanner(System.in); Long number = sc.nextLong(); //需要将这个数转换为字符串 String str = Long.toString(number); char[] ch = str.toCharArray();// 存在字符数组中 boolean result =true; for(int i =0; i<ch.length / 2;i++) { if(ch[i] != ch[ch.length-1-i]) { result = false; } } if(result ==true) { System.out.println(number+"是一个回文数"); } else { System.out.println(number+"不是一个回文数"); } } }
————————————————————————
import java.util.Scanner; /* * 输入一个数组 ,然后将其逆序输出 */ public class ReverseArray { public static void main(String[] args) { System.out.println("请输入多个正整数,输入-1 表示输入结束:"); Scanner sc = new Scanner(System.in); int[] array = new int[20]; int i=0,j; do { array[i] =sc.nextInt(); i++; }while(array[i-1] != -1); System.out.println("你输入的数组为:"); for( j = 0;j<i-1;j++) { System.out.println(array[j]+" "); } System.out.println("数组的逆序输出是:"); for(j=i-2;j>=0;j--) { System.out.println(array[j]+" "); } } }
import java.util.Scanner; /* * 输入一个位数较大的数字,截取这个数字的从左到右的3-5位 */ public class SubNumber { public static void main(String[] args) { System.out.println("请输入一个数字,至少大于5位,本程序将会截取这个数字的3-5位:"); Scanner sc = new Scanner(System.in); Long number = sc.nextLong(); //将数字转换成字符串 String str = Long.toString(number); System.out.println("截取这个数字的3-5位为:"+str.substring(2, 5)); //特别注意:substring(begin,end)是前包含,后不包含 } }
相关文章推荐
- Java编程题练习2017-02-12
- Java编程题练习2017-02-14
- java学习、java入门:JAVA编程题练习
- Java编程题练习2017-02-15
- Java编程题练习2017-02-19
- Java 接口编程题练习
- Java编程题练习2017-02-26
- Java编程题练习2017-02-13
- Java编程题练习2017-02-18
- Java编程题练习2017-02-21
- 20171223Java基础学习——编程题练习<黄金分割比>
- Java编程题练习2017-02-17
- Java编程题练习2017-02-22
- Java编程题练习2017-02-07
- Java编程题练习2017-02-16
- 20171221Java基础学习——复利编程题练习
- Java编程题练习2017-02-20
- Java程序练习:设计用户输入界面,获取网址采集规则
- java正则表达式练习-涉及分组group()
- 关于java的一些趣味编程题的实现(1)阿姆斯特朗数