SDUT PTA String习题练习

7-17 String的格式判断与内容提取 (10 分)

不错的题

import java.util.Arrays;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str=sc.nextLine();
//需要用nextLine,以后注意默认用这个,应该会减少麻烦
		int l=str.length();
		int flag=0;
		if(l%8!=0) {//排错
			System.out.println("Wrong Format");
			return;
		}
		for(int i=0;i<l;i+=8) {
			String k=str.substring(i,i+8);
			if(k.startsWith("202017")||k.startsWith("202061")) {//关键代码
				if(flag==0)
				{
					flag++;
					System.out.print(k.substring(4,8));
				}
				else System.out.print(" "+k.substring(4,8));
			}
		}
	
			
	    sc.close();
	}
 
}

7-11 单词替换 (10 分)

代码不严谨,如果查找的字符后面有标点,就错误了。但是程序测试案例较少,可以通过

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
	  String str=sc.nextLine();
	  String k=sc.next();
	  String a=sc.next();
	  String[] strs=str.split(" ");
	  for(int i=0;i<strs.length;i++) {
		  if(strs[i].equals(k)) {
			  strs[i]=a;
		  }
	  }
	  for(int i=0;i<strs.length;i++) {
		  if(i==0)System.out.print(strs[i]);
		  else  System.out.print(" "+strs[i]);
	  }
	    sc.close();
	}
 
}import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
	  String str=sc.nextLine();
	  String k=sc.next();
	  String a=sc.next();
	  String[] strs=str.split(" ");
	  for(int i=0;i<strs.length;i++) {
		  if(strs[i].equals(k)) {
			  strs[i]=a;
		  }
	  }
	  for(int i=0;i<strs.length;i++) {
		  if(i==0)System.out.print(strs[i]);
		  else  System.out.print(" "+strs[i]);
	  }
	    sc.close();
	}
 
}ava
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
	  String str=sc.nextLine();
	  String k=sc.next();
	  String a=sc.next();
	  String[] strs=str.split(" ");
	  for(int i=0;i<strs.length;i++) {
		  if(strs[i].equals(k)) {
			  strs[i]=a;
		  }
	  }
	  for(int i=0;i<strs.length;i++) {
		  if(i==0)System.out.print(strs[i]);
		  else  System.out.print(" "+strs[i]);
	  }
	    sc.close();
	}
 
}

7-10 数组元素交换 (10 分)

只能先转化成数组在写,
因为
案例:2 9 0 10,
结果是10 9 2 0

import java.util.Arrays;
import java.util.Scanner;

public class Main
{
	 public static void main(String args[]) {
		Scanner sc=new Scanner(System.in);
         String s=sc.nextLine();
         String[] k=s.split(" ");
         int[] ans=new int[k.length];
         int i=0;
         for(i=0;i<k.length;i++) {
        	 ans[i]=Integer.parseInt(k[i]);
         }
      
         int maxid=0;
         int miniid=0;
        for(i=0;i<k.length;i++) {
        	 System.out.println(ans[i]);
        	 if(ans[i]>ans[maxid]) maxid=i;
        	 else
        	 if(ans[i]<ans[miniid]) miniid=i;
         }
        
        
        for(i=0;i<k.length;i++) {
        	if(i==0)System.out.println(ans[maxid]);
        	else if(i==k.length-1) System.out.println(ans[miniid]);
        	else if(i==miniid) System.out.println(ans[k.length-1]);
        	else if(i==maxid) System.out.println(ans[0]);
        	else System.out.println(ans[i]);
        }
        
         
	       sc.close();


	 }	
}     

7-1 sdut-String-3 字符串字母大小写转换逆序输出 (10 分)

import java.util.*;

public class Main{
	  public static void main(String[] args) {
	      Scanner sc = new Scanner(System.in);
	      String str=sc.nextLine();
	      String s="";
	      for(int i=0;i<str.length();i++) {
	    	  char a=str.charAt(i);
	    	  if('a'<=a&&a<='z') {
	    		  a-=32;
	    	  }
	    	  else   if('A'<=a&&a<='Z') {//注意这里的else
	    		  a+=32;
	    	  }
	    	  s+=a;
	      }
	     StringBuffer stf=new StringBuffer(s);//StringBuffer有反转函数
	    System.out.println(stf.reverse());
	     
	      sc.close();
	  }
	}

7-2 sdut-String-4 去除字符串中数字字符逆序输出 (10 分)

import java.util.*;

public class Main{
	  public static void main(String[] args) {
	      Scanner sc = new Scanner(System.in);
	      String str=sc.nextLine();
	      String[] t=str.split("\\d+");//获取字符串所有非数字字符
	      String s="";
	      for(int i=0;i<t.length;i++) {
	    	  s+=t[i];
	      }
	     StringBuffer stf=new StringBuffer(s);
	    System.out.println(stf.reverse());
	     
	      sc.close();
	  }
	}

7-3 sdut-String-1 识蛟龙号载人深潜,立科技报国志(I) (10 分)

正确代码

import java.util.Scanner;

public  class Main{
	public static void main(String []args) {
		Scanner sc =new Scanner(System.in);
		String s = null;
		s=sc.nextLine();
		while(!s.equals("end")) {
			int sum=0;
			
			for(int i=0;i<s.length();i++) {
			char ch=s.charAt(i);
			if(ch>='0'&&ch<='9') {
				sum+=(ch-'0');
			}
		}
			System.out.println(sum);
			s=sc.nextLine();
		}
		sc.close();
	}
}

错误代码

import java.util.*;

public class Main{
	  public static void main(String[] args) {
		  
	      Scanner sc = new Scanner(System.in);
	      String str=sc.nextLine();
	      while(!str.equals("end")) {
	    	  
	      String[] t=str.split("\\D+");
	       int ans=0;
	      for(int i=0;i<t.length;i++) {
	    	  System.out.println(t[i]);
//***************下面parse会报错***************
	    	  int cnt=Integer.parseInt(t[i]);
	    	  int cnt2=0;
	    	  while(cnt>0) {
	    		  int c=cnt%10;
	    		  cnt2+=c;
	    		  cnt/=10;
	    		  
	    	  }
	    	  ans+=cnt2;
	    	  
	      }
	    System.out.println(ans);
	    str=sc.nextLine();
	      }
	      sc.close();
	  }
	}

7-6 sdut-String+array1(Collection-Map)-1 读中国载人航天史,汇航天员数量,向航天员致敬(字符串+数组、LinkedMap ) (10 分)

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.*;

public  class Main{
	public static void main(String []args) {
		Scanner sc =new Scanner(System.in);
		Map<String,Integer> map=new LinkedHashMap<String,Integer>();//建议定义泛型,方便
		String str=sc.next();
		while(!str.equals("end")) {
			if(!map.containsKey(str)) {//判断是否含有该键值
				map.put(str, 1);
			}
			else {
				map.put(str, map.get(str)+1);
			}
			
			
			str=sc.next();
		}
		for(Entry<String, Integer> t :map.entrySet()) {//foreach遍历
			//别引入错Entry的包
			System.out.println(t.getKey()+" "+t.getValue());
		}
		sc.close();
	}
}

7-7 sdut-String-6 Java判断合法标识符 (10 分)

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.*;

public  class Main{
	public static void main(String []args) {
		Scanner sc =new Scanner(System.in);
		while(sc.hasNext()) {
			boolean flag=true;
			String str=sc.nextLine();
			for(int i=0;i<str.length();i++) {
				char ch=str.charAt(i);
				if(i==0) {
					flag=Character.isJavaIdentifierStart(ch);
					if(flag==false) {
						System.out.println(flag);
						break;
					}
				}
				else {
					 flag=Character.isJavaIdentifierPart(ch);
					if(flag==false) {
						System.out.println(flag);
						break;
				}
			}
		}
			if(flag==true) {
				System.out.println(flag);
			}
		
	}
		sc.close();

	}
}

posted @ 2021-11-18 10:38  kingwzun  阅读(826)  评论(0编辑  收藏  举报