import java.util.Scanner; public class Prog7_1{ public static void main(String[] args){ System.out.print("请输入一串字符:"); Scanner scan = new Scanner(System.in); String str = scan.nextLine();//将一行字符转化为字符串 scan.close(); count(str); } //统计输入的字符数 private static void count(String str){ String E1 = "[\u4e00-\u9fa5]";//汉字 String E2 = "[a-zA-Z]"; String E3 = "[0-9]"; String E4 = "\\s";//空格 int countChinese = 0; int countLetter = 0; int countNumber = 0; int countSpace = 0; int countOther = 0; char[] array_Char = str.toCharArray();//将字符串转化为字符数组 String[] array_String = new String[array_Char.length];//汉字只能作为字符串处理 for(int i=0;i<array_Char.length;i++) array_String = String.valueOf(array_Char); //遍历字符串数组中的元素 for(String s:array_String){ if(s.matches(E1)) countChinese++; else if(s.matches(E2)) countLetter++; else if(s.matches(E3)) countNumber++; else if(s.matches(E4)) countSpace++; else countOther++; } System.out.println("输入的汉字个数:"+countChinese); System.out.println("输入的字母个数:"+countLetter); System.out.println("输入的数字个数:"+countNumber); System.out.println("输入的空格个数:"+countSpace); System.out.println("输入的其它字符个数:"+countSpace); } } |
import java.util.*; public class Prog7_2{ public static void main(String[] args){ System.out.println("请输入一行字符:"); Scanner scan = new Scanner(System.in); String str = scan.nextLine(); scan.close(); count(str); } //统计输入的字符 private static void count(String str){ List<String> list = new ArrayList<String>(); char[] array_Char = str.toCharArray(); for(char c:array_Char) list.add(String.valueOf(c));//将字符作为字符串添加到list表中 Collections.sort(list);//排序 for(String s:list){ int begin = list.indexOf(s); int end = list.lastIndexOf(s); //索引结束统计字符数 if(list.get(end)==s) System.out.println("字符‘"+s+"’有"+(end-begin+1)+"个"); } } } 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 public class Prog9{ public static void main(String[] args){ int n = 10000; compNumber(n); } //求完数 private static void compNumber(int n){ int count = 0; System.out.println(n+"以内的完数:"); for(int i=1;i<n+1;i++){ int sum = 0; for(int j=1;j<i/2+1;j++){ if((i%j)==0){ sum += j; if(sum==i){ System.out.print(i+" "); if((count++)%5==0) System.out.println(); } } } } } } 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 public class Prog11{ public static void main(String[] args){ int count = 0; int n = 0; for(int i=1;i<5;i++){ for(int j=1;j<5;j++){ if(j==i) continue; for(int k=1;k<5;k++){ if(k!=i && k!=j){ n = i*100+j*10+k; System.out.print(n+" "); if((++count)%5==0) System.out.println(); } } } } System.out.println(); System.out.println("符合条件的数共:"+count+"个"); } } |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |