您的位置:首页 > 编程语言 > Java开发

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)是前包含,后不包含

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: