1. 程式人生 > >Java 筆試題的演算法題之io程式設計(一)

Java 筆試題的演算法題之io程式設計(一)

題目:刷卡記錄:名字-金錢    讀取並找出刷卡次數最多,單筆消費最多

程式碼:

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;


//刷卡記錄:名字-金錢    讀取並找出刷卡次數最多,單筆消費最多

public class IoTest {
    
	public static void main(String[] args) {
		
		FileReader fr =null;
		BufferedReader br= null;
		ArrayList<Node> al = new ArrayList<Node>();
		HashSet<String> set = new HashSet<String>();
		HashMap<String, Integer> map = new HashMap<String, Integer>();
       try {
		     fr = new FileReader("d://test.txt");
    	     br = new BufferedReader(fr);
    	     String n = "";
    	     //readLine 如果到流末尾則會返回null
    	     while ((n=br.readLine())!=null)
    	     {
    	    	 //封裝成類
    	    	 String node[] =n.split("-");
    	    	 Node node1 = new Node(node[0], Float.parseFloat(node[1]));
    	    	 set.add(node[0]);
    	    	 al.add(node1);
    	    	// System.out.println(node1.name);
    	     }
    	     
    	     //找出單筆最大花費的人
    	     String maxName = "";
    	     for (int i =1;i<al.size();i++)
    	     {
    	    	 Node node = al.get(i);
    	    	 
    	    	 if(node.cost>al.get(i-1).cost)
    	    	 {
    	    		 maxName = node.name;
    	    	 }
    	     }
    	     System.out.println("單筆花費最多的人是:"+maxName);
    	     
    	  /* for(int i=0;i<al.size();i++)
    	   {
    		   System.out.println(al.get(i).name+"  "+al.get(i).cost);
    	   }*/
    	       
    	     
    	      //遍歷set得到各個人的刷卡次數,儲存到map中
    	      Iterator<String> iter = set.iterator();
    	       
    	      while (iter.hasNext()) {
    	        String name = (String) iter.next();
    	        
    	        int count =0;
    	        for(int i =0;i<al.size();i++)
    	        {   
    	    
    	        	if(al.get(i).name.equals(name))
    	        	{
    	        		count++;
    	        	}
    	        	
    	        }
    	        map.put(name, count);
    	        
                  
    	   }
    	    
    	    //遍歷map得到每個人的刷卡次數
    	    Iterator iter2 = map.keySet().iterator();
  	        while(iter2.hasNext())
  	        {
  	        	String name2 =(String) iter2.next();
  	        	int count = map.get(name2);
  	        	System.out.println(name2+"  次數: "+count);
  	        }
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
       //關閉檔案
       finally{
    	   try {
		   br.close();
    	   fr.close();
		} catch (Exception e2) {
			// TODO: handle exception
			e2.printStackTrace();
		}
    	
       }
	}
 
}

//資訊記錄類
class Node{
	String name;
	float cost;
	public Node(String name ,float cost)
	{
		this.cost=cost;
		this.name= name;
	}
}

相關推薦

Java 試題演算法io程式設計

題目:刷卡記錄:名字-金錢    讀取並找出刷卡次數最多,單筆消費最多 程式碼:import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import jav

java基礎IO

目標 構造方法 play pub io流 ted ima str 有一個 java基礎之IO流(一)之字節流   IO流體系太大,涉及到的各種流對象,我覺得很有必要總結一下。   那什麽是IO流,IO代表Input、Output,而流就是原始數據源與目標媒介的數據傳輸的一種

Java基礎IO操作

Java基礎之IO操作(一) 一、FileInputStream 第一個程式,理解操作步驟 public static void main(String[] args) { //1、建立源 File src = new File("abc.txt"); //2、

linux學習筆記shell程式設計

shell程式設計 基礎正則表示式 正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式 ####正則

linux學習筆記shell程式設計正則表示式與字元處理

shell程式設計 基礎正則表示式 正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式 ####正則表示式常用的字元(注意區別於萬用字元裡面的符號)#### -*

劍指offer演算法分析與整理

下面整理一下我在刷劍指offer時,自己做的和網上大神做的各種思路與答案,自己的程式碼是思路一,保證可以通過,網友的程式碼提供出處連結。 目錄 1、陣列中的逆序對 在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸

Java併發包原始碼學習AQS框架概述

AQS其實就是java.util.concurrent.locks.AbstractQueuedSynchronizer這個類。 閱讀Java的併發包原始碼你會發現這個類是整個java.util.concurrent的核心之一,也可以說是閱讀整個併發包原始碼的一個突破口。 比如讀ReentrantLock的

C語言網路程式設計域名解析

在網路程式設計時,知道域名是不能直接訪問一個主機的,需要轉換成相應的IP地址。有時在程式中需要將一個IP地址轉換成一個域名。本節將講解C程式中的IP地址與域名的轉換問題。 提示:在TCP/IP網路中,通訊雙方的主機必須知道彼此的IP地址方可進行正常的通訊,如果給出的主機的域

Java試題整理--資料庫MySQL

1)關係型和非關係型資料庫的區別?關係型資料庫:是指採用了關係模型來組織資料的資料庫。可以理解成二維的excel表格,是一一對應關係。常見的關係型資料庫有:MySQL、Oracle、DB2、Microsoft SQL Server、Microsoft Access等;非關係型

javaIO整理

getparent create olt highlight print enc buffered byte package 一:打印流/*System.out.println()重定向輸出*/ /*public static void main(String[] ar

Java基礎IO操作

Java基礎之IO操作(二) 一、BufferedInputStream public static void main(String[] args) { File src = new File("abc.txt"); //2、選擇流 InputStream is =null;

Java高併發程式設計synchronized關鍵字

首先看一段簡單的程式碼: public class T001 { private int count = 0; private Object o = new Object(); public void m() { //任何執行緒要執行下面這段程式碼

java筆記IO位元組流

 1.概念     * IO流用來處理裝置之間的資料傳輸     * Java對資料的操作是通過流的方式     * Java用於操作流的類都在IO包中     

黑馬程式設計師——Java IOIO流概述、字元流、位元組流等

-----------android培訓、java培訓、java學習型技術部落格、期待與您交流!------------ IO流 一、概述 1.IO流是用來處理裝置之間的資料傳輸。  2.Java對資料的操作時通過流的方式。  3.Java用於操作流的物件都在IO包中。  

Java網路程式設計Socket通訊

       最近在學習Java網路程式設計,之前聽說過,但是一直都沒有認真瞭解過。這幾天突然來了興致,覺得很神奇,忽然就想要了解下具體是什麼個情況。         Socket通常也稱作"套接字",用於描述IP地址和埠,是一個通訊鏈的控制代碼。在Internet上的主機

javaIO

IO:在裝置和裝置之間的一種資料傳輸!  IO流的分類:  按流的方向分:  輸入流: 讀取檔案   (e:\\a.txt):從硬碟上檔案讀取出來後輸出這個檔案的內容 輸出流: 寫檔案:將e:\\a.txt 內容讀出來--->寫到f盤下 按資料的型別劃分:  位元組流 

JavaHTTP網路程式設計:TCP/SSL網頁下載

目錄 一、簡介:HTTP程式設計     1、HTTP系統設計     2、HTTP客戶端工作過程     3、HTTP服務端工作過程 二、基於TCP Socket的HTTP網頁下載 三、基於SSL Socke

10.1-全棧Java筆記:最全面的IO技術

javaIO技術對於任何程序設計語言而言,輸入輸出(Input/Output)系統都是非常核心的功能。程序運行需要數據,數據的獲取往往需要跟外部系統進行通信,外部系統可能是文件、數據庫、其他程序、網絡、IO設備等等。外部系統比較復雜多變,那麽我們有必要通過某種手段進行抽象、屏蔽外部的差異,從而實現更加便捷的編

Java集合初探

lin 數據改變 排序。 方法 規則 找不到 集合 回收 for循環 一、集合概述、區別 集合是一種容器,數組也是一種容器 在Java編程中,裝各種各樣的對象(引用類型)的叫做容器。 為什麽出現集合類? 面向對象語言對事物的體現都是以對象的形式,所以為了方便對多個對象的操作

java多態

stat span print ive 匹配 anim 註釋 上轉型 exceptio 一、多態是繼封裝、繼承之後,面向對象的第三大特性。現實事物經常會體現出多種形態,如學生,學生是人的一種,則一個具體的同學張三既是學生也是人,即出現兩種形態。 Java作為面向對象的語言,