zoukankan      html  css  js  c++  java
  • java所有内容练习

    分支, 循环, 数据类型

    有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    	int sum = 0;
    
        	for (int i = 1; i < 5; i++) {
    			for (int j = 1; j < 5; j++) {
    				for (int j2 = 1; j2 < 5; j2++) {
    					if (i != j&&i != j2&&j!=j2) {  //不能有重复数字
    						sum++;   //计算能够组成的三位数的个数
    						System.out.println(i+" "+j+" "+j2);
    					}
    					
    				}
    			}
    		}
    		
    		System.out.println(sum);
    

    有一分数序列:2 / 1,3 / 2,5 / 3,8 / 5,13 / 8,21 / 13...求出这个数列的前20项之和。

    double j = 1.0;   //分子
    		double k = 1.0;	//分母  规律:分子加分母等于下一个的分子,分子当分母
    		double sum2 = 0.0;  
    		int ci = 0;
    		for (int i = 0; i < 20; i++) {
    			j = j+k;
    			k = j-k;
    			ci++;
    			sum2 = sum2 + j/k;  //求20项的和
    			System.out.println(j/k);
    		}
    		System.out.println("和:"+sum2);
    		System.out.println("打印数量:"+ci);
    

    求1! + 2! + 3! +...+ 20!的和

    	 long result = 0;
    		 int f = 1;
    		 for (int i = 1; i <= 20 ; i++) {
    			f = f*i;
    			result += f;
    		}
    		 System.out.println(result);
    

    一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

    String s = "22327";
    		if (s.charAt(0)== s.charAt(4)&&s.charAt(1)==s.charAt(3)) {  //取索引值上的字符
    			System.out.println("是回文数");
    		}else {
    			System.out.println("不是回文数");
    		}
    

     使用最少的代码将字符串String转换成字符数组

    String  s = "132";
    		char[] ch = new char[s.length()];  //定义一个字符数组
    		ch = s.toCharArray();  //   将字符串转换成一个字符数组
    		System.out.println(ch);
    
    //另一种方法(最少的代码)
    		String s = "shutup";
    		System.out.println(Arrays.toString(s.toCharArray()));
    

     将二进制字符串("11010011"), 八进制字符串("3325"), 十六进制字符串("5a3f")转换成数字, 在控制台上打印出来

    String e = "11010011";
    		String b = "3325";
    		String shi = "5a3f";
    		int e2 = Integer.parseInt(e);
    		System.out.println(e2);
    		int b2 = Integer.parseInt(b);
    		System.out.println(b2);
    		System.out.println(Integer.parseInt(shi,16)); //把字符串转换成16制
    

     取一个随便的字符串中字母出现的次数, 打印出来

    	Scanner sc = new Scanner(System.in);
    		System.out.println("请输入一串字符");
    		String shu = sc.nextLine();
    		char c [] = shu.toCharArray();  //将输入的字符串转换成一个字符数组
    		  Map<Character,Integer> map = new HashMap<Character,Integer>();
    		 for (char d : c) {  //遍历
    			map.put(d, map.get(d) == null ? 1: map.get(d)+1);  //三目运算符
    		}
    		  System.out.println(map);
    

     总结:此题用到了三目运算符,此处的字母为键值,如果此字母在map里面没有的,就是等于null,那么添进去的时候
        就是记一个1,下次此字母再次出现的时候,数字加1,put不是添加的意思,而是修改的意思

     有一个字符串形式的任意日期是"yyyy-MM-dd"的格式, 计算这个日期到1949年10月1日上午8点差了多少小时

     String date1 = "1949-10-01  08:00";
    		  	String date2 = "2017-12-07 09:58";
    		  	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    		  	Date d1 = null;
    			Date d2 = null;
    			try {
    				d1 = sdf.parse(date1);
    				d2 = sdf.parse(date2);
    			} catch (ParseException e) {
    				e.printStackTrace();
    			}
    			 long l1 = d1.getTime();  //获取的毫秒数
    			 long l2 = d2.getTime();
    			 System.out.println((l2-l1)/1000/60/60); //差几个小时
    			 //一秒 = 1000毫秒,一分=60秒,一小时 = 60分
    

    从data.txt文件中读取数据到程序中, 实现一个联动功能,
        即输入主食会显示"1---馒头    2---煎饼    3---米饭", 再次输入会显示下一级菜单
        data.txt文件中每一行都有被 "," 分割的三个值, 第一个值代表这项食物的编号(对于整个数据来说是唯一的),
        第三个值表示所属的上一级食物分类

    data.txt文件如下图:

    实现的效果:

    public class Food {
    		private String  xu;
    		private String ming ;
    		private String caidan;
    		public Food() {
    		}
    		public Food(String xu, String ming, String caidan) {
    			super();
    			this.xu = xu;
    			this.ming = ming;
    			this.caidan = caidan;
    		}
    		public String getXu() {
    			return xu;
    		}
    		public void setXu(String xu) {
    			this.xu = xu;
    		}
    		public String getMing() {
    			return ming;
    		}
    		public void setMing(String ming) {
    			this.ming = ming;
    		}
    		public String getCaidan() {
    			return caidan;
    		}
    		public void setCaidan(String caidan) {
    			this.caidan = caidan;
    		}
    		@Override
    		public String toString() {
    			return "菜单 [编号" + xu + ", 名字=" + ming + ", 类别=" + caidan + "]";
    		}
    		
    }
    
    public class Read {  
    
                public static void main(String[] args) {
    			
    		
    		List<Food> list2 = PrientFood("F:\data.txt");
    		for (Food ff : list2) {
    			if (ff.getCaidan().equals("0")) {  //把一开始的那个显示出来就可以了
    				System.out.println(ff);
    			}
    			
    		}
    			Scanner scanner = new Scanner(System.in);
    			System.out.println("请选择输入编号");
    			String str = scanner.nextLine();
    			
    				for (Food food : list2) {
    				if (str.equals(food.getCaidan())) {
    					System.out.println(food);
    				}
    			  }
    			
    			
    			System.out.println("请选择输入编号");
    			String str2 = scanner.nextLine();
    			for (Food food : list2) {
    				if (str2.equals(food.getCaidan())) {
    					System.out.println(food);
    				}
    			}
    			scanner.close();
    			
    	}
    	public static List<Food> PrientFood (String dizhi) {  //此方法是把读到的文件放在一个集合里面
    		File file = new File(dizhi);
    		List<Food> list  = null;
    		if (file.exists()) {  //判断如果文件存在的话
    			
    			try {
    				InputStream is = new FileInputStream(file);
    				InputStreamReader ir = new 	InputStreamReader (is,"UTF-8"); 
    				//字节流转换成字符流,碰到了乱码的问题,此时要考虑的就是这样的一种情况
    				BufferedReader br = new BufferedReader (ir);
    				 
    				String ss = null;
    				list = new ArrayList<Food>();
    				while ((ss = br.readLine())!= null) {
    					String [] str = ss.split(",");  //将读到的内容转换成字符串数组
    					Food fd = new Food(str[0],str[1],str[2]); 
    					//每次读一行,用","隔开的数组,每次取索引值
    					list.add(fd);  //添加进集合里面
    					
    				}
    				br.close();
    			} catch (FileNotFoundException e) {
    				e.printStackTrace();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}else {
    			System.out.println("没有找到文件");
    		}
    		
    		return list;  //返回值
    		
    		
    	}
    
    }
    

    写一个程序统计一个项目中src下的所有 .java 文件的代码行数总和(空行不算,)

    public class Daima {
    
                    public class Daima {  //写一个程序统计一个项目中src下的所有 .java 文件的代码行数总和(空行不算,)
    		private static int daima;  //代码行数
    		
    	public static void main(String[] args) {
    		
    		File file = new File("F:\1117\diyi\src");  //文件
    		SuanShu(file);
    		System.out.println(daima);
    		
    		
    	}
    	public static void SuanShu(File file) {
    		if (file.exists()) {
    			File [] shu = file.listFiles();  //获取文件夹下文件和子文件夹
    			if (shu != null) {  //判断里面有没有文件夹,或者是文件
    			for (File file2 : shu) { //遍历
    				if (file2.isDirectory()) { //是否是一个目录
    					SuanShu(file2); //递归,自身调用自身
    				}else {
    					if (file2.getName().endsWith(".java")) {
    						try {
    							Reader r = new FileReader(file2);
    							BufferedReader br = new BufferedReader(r);
    							String s = null;
    							while (( s = br.readLine()) != null) {
    								if (s.trim().length() >= 0) {
    									daima++; 
    								}
    							}
    							br.close();
    						} catch (FileNotFoundException e) {
    							e.printStackTrace();
    						} catch (IOException e) {
    							e.printStackTrace();
    						}
    					}
    		}
    		
    				}
    			}
    		}
    
    	}
    }
    

    写一个带线程同步的程序模拟5个人在火车站买票, 总共有4张票

    public class TestCount {
    
                private static int i = 4; //  票数
    		public static  synchronized void sail(String name) {
    			if( i > 0) { 
    			try {
    				Thread.sleep(1);
    			} catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    				
    				System.out.println(name+"买了第"+i-- + "张票");
    				}else {
    					System.out.println("没票了");
    				}
    		}
    }
    

      注意的一点:      静态方法里只能用静态变量,不可以是非静态变量  ! ! ! ! ! !

    public class TestSynchronize {
    
    	public static void main(String[] args) {
    			TestThread tt = new TestThread();
    			Thread t1 = new Thread(tt);
    			Thread t2 = new Thread(tt);
    			Thread t3 = new Thread(tt);
    			Thread t4 = new Thread(tt);
    			Thread t5 = new Thread(tt);
    			t1.setName("小王");
    			t2.setName("小吴");
    			t3.setName("小刚");
    			t4.setName("小刘");
    			t5.setName("小孙");
    			t1.start();
    			t2.start();
    			t3.start();
    			t4.start();
    			t5.start();
    	}
    	
    }
    class TestThread implements Runnable{
    	//public Testcount testcount = new Testcount();
    	
    	@Override
    	public void run() {
    		TestCount.sail(Thread.currentThread().getName());   //获取当前线程的名字
    		//调取的是Testcount里的sail方法,里面传进去的名字是当前线程的名字,名字就可以改了
    	}
    	
    }
    

    设计一个分页工具类, 具有两个属性: page(当前页数),
        rows(每页显示行数), 实例化一个List<String>, 并为其添加30条以上的任意数据,
        再定义一个方法, 参数为此List和分页工具类, 调用时显示出相应的数据
        要求:
            分页工具类具有可设置属性的构造方法, 具有空参构造方法, 调用空参构造方法则自动为其设置属性
            调用方法时需要显示List里面相应的内容, 并打印"当前是第__页, 显示从__到__条"

    public class YeShu {
    	private int page;  //当前多少页
    	private int rows;  //一页多少行
    	private int start;  //在集合里面一开始要取的头(每一页的开头)
    	private int end;   //在集合里面一开始要取的尾(每一页的结尾)
    	public YeShu() {
    		this.page = 1;  //默认第一页
    		this.rows = 10;  //默认的一页有10行数据
    		this.start = (page - 1) * rows;  //此处注意的是集合里面的索引是从0开始的,也就是0-9
    		this.end = (page * rows) - 1;    
    	}
    	public YeShu(int page, int rows) {
    		this.page = page;
    		this.rows = rows;
    		this.start = (page - 1) * rows;  
    		this.end = (page * rows) - 1;
    	}
    	public void showpage () {
    		System.out.println("当前是第"+page+"页,从第"+(start+1)+"行,到第"+(end+1)+"行");
    	}
    	public int getPage() {
    		return page;
    	}
    	public void setPage(int page) {
    		this.page = page;
    	}
    	public int getRows() {
    		return rows;
    	}
    	public void setRows(int rows) {
    		this.rows = rows;
    	}
    	
    	public int getStart() {
    		return start;
    	}
    	public void setStart(int start) {
    		this.start = start;
    	}
    	public int getEnd() {
    		return end;
    	}
    	public void setEnd(int end) {
    		this.end = end;
    	}
    	
    	
    }
    
    public class TestYeShu { 
    
    
                    public static void main(String[] args) {
    		List<String> list = new ArrayList<String>();  //实例化一个集合
    		for (int i = 1; i < 37; i++) {
    			list.add("aaa"+i);  //添加了36条数据
    		}
    		YeShu ys = new YeShu(4,7);
    		showinfo(list,ys);
    		ys.showpage();
    		
    		
    	}
    	public static void showinfo (List<String> list,YeShu ys) {
    		for (int i = ys.getStart(); i <= ys.getEnd(); i++) {  //循环取出里面集合里的数据
    			try {
    				System.out.println(list.get(i));
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
  • 相关阅读:
    HAproxy 1.5 dev14 发布
    IBM/DW 使用 Java 测试网络连通性的几种方法
    Skype 4.1 Linux 发布,支持微软帐号登录
    Dorado 7.1.20 发布,Ajax的Web开发平台
    Aspose.Slides for Java 3.0 发布
    开发版本 Wine 1.5.18 发布
    BitNami Rubystack 开始支持 Ruby 2.0
    XWiki 4.3 正式版发布
    Silverlight实例教程 Out of Browser的Debug和Notifications窗口
    Silverlight实例教程 Out of Browser与Office的互操作
  • 原文地址:https://www.cnblogs.com/zuo72/p/7999744.html
Copyright © 2011-2022 走看看