///前两次给大家总结的都是些比较概念性的东西,都说实践出真理,这次就给大家分享些比较典型的例题,供大家对概念性的东西加深印象
1.
import java.util.Scanner;
class Class22{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter string: ");
String s1=scanner.nextLine();
System.out.print("Enter string: ");
String s2=scanner.nextLine();
for(int i=0;i<=s1.length()-s2.length();i++){//比较时比较不到最后一个最多比较到长串减短串处
boolean flag=true;
if(s1.charAt(i)==s2.charAt(0)){//当s1有元素跟s2的第一个元素相等时
for(int j=1;j<s2.length();j++){//从s2的第二个元素开始比,第一个元素已经比过了
if(s1.charAt(i+j)!=s2.charAt(j)){//
flag=false;
break;
}
}
if(flag){//设flag的目的是为了标记该程序是正常执行完的,还是break出来的
System.out.println(s2+" is a substring of "+s1);
return;
}
}
}
System.out.println(s2+" is not a substring of "+s1);
}
}
2.
import java.util.Scanner;
class Class26_1{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a number:");
int num=scanner.nextInt();
if(isPalindrome(num)){
System.out.println("合法");
}else{
System.out.println("不合法");
}
}
public static boolean isPalindrome(int num){//判断其是否为回文整数
return reverse(num)==num;
}
public static int reverse(int num){//将输入的数转变为反置数
int res=0;
while(true){
res=res*10+num%10;
num/=10;
if(num==0){
break;
}
}
return res;
}
}
import java.util.Scanner;
class Class27{
/*
1.提示用户输入
2.判断其是否合法
3.输出
*/
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a pwd: ");
String pwd=scanner.nextLine();
if(isValid(pwd)){//判断是否合法
System.out.println("Valid");
}else{
System.out.println("InVaild");
}
}
public static boolean isValid(String pwd){//判断合法需要三个条件,需三个条件同时成立
return isRight1(pwd)&&isRight2(pwd)&&isRight3(pwd);
}
public static boolean isRight1(String pwd){//密码必须至少8位字符
return pwd.length()>=8;
}
public static boolean isRight2(String pwd){//密码只能为字母和数字
for(int i=0;i<pwd.length();i++){
char c=pwd.charAt(i);
if(!isDigit(c)&&!isLetter(c)){
return false;
}
}
return true;
}
public static boolean isDigit(char c){//判断是否为数字
return c>='0'&&c<='9';
}
public static boolean isLetter(char c){//判断是否为字母
return (c>='a'&&c<='z')||(c>='A'&&c>='Z');
}
public static boolean isRight3(String pwd){//判断是否至少包含连个数字
int digitcount=0;//记录数字个数
for(int i=0;i<pwd.length();i++){
if(isDigit(pwd.charAt(i))){
digitcount++;
}
}
return digitcount>=2;
}
}
解法一:边读边删
import java.util.*;
class Class30{
public static void main(String[] args){
//解法一:边读边删
//把数组长度先置0;然后再扩容(读一个元素,如果该数组中不包括该元素,就把该数组长度+1)
//最后输出该数组
Scanner scanner=new Scanner(System.in);
int[] arr=new int[0];//定义一个数组长度为0的数组
System.out.print("Enter ten numbers: ");
for(int i=0;i<10;i++){//输入10个数
int number=scanner.nextInt();
if(!isContains(arr,number)){//如果该元素不在该数组中
arr=resize(arr,arr.length+1);//扩容该数组,传进该函数的数组长度为该数组长度加1
arr[arr.length-1]=number;//把当前输入的该元素赋给扩容后的数组的最后一个位置
}
}
System.out.println(Arrays.toString(arr));//打印该数组
}
public static boolean isContains (int[] arr,int number){//判断输入的数是否包含在该数组中
for(int i=0;i<arr.length;i++){
if(arr[i]==number){
return true;
}
}
return false;
}
public static int[] resize(int[] arr,int newArrlength){//扩容
int[] newArr=new int[newArrlength];//该方法中定义一个新数组,该数组长度为之前的数组长度+1
for(int i=0;i<arr.length;i++){//遍历之前的数组
newArr[i]=arr[i];//把之前的数组元素赋给当前新数组中
}
return newArr;//返回扩容后新的数组
}
}
解法二:读完再删
import java.util.*;
class Class30{
public static void main(String[] args){
//版本二:读完再删
Scanner scanner=new Scanner(System.in);
int[] arr=new int[10];//定义一个长度为10的数组
System.out.print("Enter ten numbers: ");
for(int i=0;i<arr.length;i++){
arr[i]=scanner.nextInt();//遍历该数组,给该数组赋值
}
int size=arr.length;
for(int i=0;i<size;i++){
for(int j=i+1;i<size;){//与当前的下一个比较
if(arr[i]==arr[j]){
for(int k=j+1;k<size;k++){//如果与下一个相等,为了删除该相等的数,则把后面的数都向前移动
arr[k-1]=arr[k];
}
size--;//移完之后把数组长度减一
}else{//如果不相等则j++继续下一轮比较
j++;
}
}
}
for(int i=0;i<size;i++){
System.out.print(arr[i]+" ");//打印该数组
}
}
import java.util.Scanner;
class Class32{
/*
1.提示用户输入球的个数
2.提示用户输入槽的个数 球经历的路径层数=槽数-1;
3.打印每一个球的路径
4.打印槽中球的个数 路径中R的个数表示该球落入哪个槽中
*/
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter the number of balls to drop:");
int balls=scanner.nextInt();
System.out.print("Enter the number of slots in the bean machine:");
int slots=scanner.nextInt();
int[] a=new int[slots];//路径层数 槽的数组表示槽的位置
for(int i=0;i<balls;i++){//球
String path="";
for(int j=0;j<slots-1;j++){//路径=槽数减1
path+=Math.random()>0.5?'L':'R';
}
System.out.println(path);//打印路径
a[getlocation(path)]++;//某一槽数中的球数加1
}
for(int i=0;i<a.length;i++){//遍历每个槽
System.out.print("solt"+i);//槽的编号
for(int j=0;j<a[i];j++){//球的个数打印
System.out.print("o");
}
System.out.println();
}
}
public static int getlocation(String path){//遍历路径
int count=0;//R的个数表示槽的位置
for(int i=0;i<path.length();i++){
if(path.charAt(i)=='R'){//如果路径中有R
count++;//槽的位置++
}
}
return count;//返回槽的位置
}
}
import java.util.*;
class Class34{ //全局变量:不用传参,函数可以直接调用主函数外面的东西
//1.先生成一组单词
public static String [] words={"banana","apple"};
//2.随机抽取一个单词
public static String word=null;
//3.创建该单词的一个状态数组
public static boolean[] state=null;
//4.猜错的次数
public static int missed=0;
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
Random random=new Random();
word =words[random.nextInt(words.length)];//对单词进行初始化 随机抽取一个单词
state=new boolean[word.length()];//定义该单词状态数组
//5.开始输入字符猜单词
while(true){
String password=getPassWord();//要输出的是一个密文,与单词有关,还与当前单词的状态有关
System.out.print("Enter a letter in word "+password+":");
String letter=scanner.nextLine();//从键盘输入一个字母
changeWordStste(letter);//改变单词状态,从左到右全改
if(isEnd()){//当前是否猜完
System.out.println("The word is "+word+".You missed "+missed+" time");
break;
}
}
}
public static String getPassWord(){
String password="";
for(int i=0;i<word.length();i++){
if(state[i]==true){
password+=word.charAt(i);
}else{
password+="*";
}
}
return password;
}
public static void changeWordStste(String letter){
boolean isExist=false;
for(int i=0;i<word.length();i++){//遍历整个单词,找相同的字母,重新显示单词
if(( word.charAt(i)+"" ).equals(letter)){//任何字符加一个空字符串都会变为字符串
isExist=true;
if(state[i]==false){//
state[i]=true;
}else{
System.out.println("\t"+letter+"is already in the word");
return;
}
}
}
if(!isExist){//标记如果改字母不存在
missed++;//记录猜错次数
System.out.println("\n"+letter+" is not in the word");
}
}
public static boolean isEnd(){//判断该单词猜测是否结束
for(int i=0;i<state.length;i++){
if(state[i]==false){//如果状态里面还有未猜测的,说明未结束
return false;
}
}
return true;
}
}