/*
* 字符串替换程序
* 将输入的字符串中空格替换成*号
* 将 ,(逗号替换成@符号)
*/
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 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-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)是前包含,后不包含
}
}