程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 對字符串進行簡單的字符數字統計 探索java中的List功能,javalist

對字符串進行簡單的字符數字統計 探索java中的List功能,javalist

編輯:JAVA綜合教程

對字符串進行簡單的字符數字統計 探索java中的List功能,javalist


題目:

統計一個字符串中數字和字符串的個數,並分別進行排列,要求

1.數字,字符串可以從鍵盤獲取。

2.儲存在list

3.統計數字個數,字符串個數

4.把數字和字符串按從小到大的順序輸出

5.不能使用數組.

List的用法

List包括List接口以及List接口的所有實現類。因為List接口實現了Collection接口,所以List接口擁有Collection接口提供的所有常用方法,又因為List是列表類型,所以List接口還提供了一些適合於自身的常用方法。【自行百度】

List接口提供的適合於自身的常用方法均與索引有關,這是因為List集合為列表類型,以線性方式存儲對象,可以通過對象的索引操作對象。

List接口的常用實現類有ArrayList和LinkedList,在使用List集合時,通常情況下聲明為List類型,實例化時根據實際情況的需要,實例化為ArrayList或LinkedList,例如:

List<String> l = new ArrayList<String>();// 利用ArrayList類實例化List集合

但是!在筆者的eclipse中,如果是在main函數中申明的話,需要寫全,不然會出現很美妙的紅色波浪線【筆者在這裡糾結了好久好久。。。。】

    
        java.util.List<String> list=new ArrayList<String>();
        

但是在public class中就直接申明就好

1     
2     static List<String> number=new ArrayList<String>();
3     static List<String> word=new ArrayList<String>();
4     

這裡是申明了兩個string型的list,分別用來存放字符串中的數字和字符串

為了實現題目中要求,建立了幾個自定義函數

 計數函數  static void count(List<String> l)

1     static void count(List<String> l){
2         for(int i=0;i<l.size();i++){
3             if(isnumber(l.get(i))){
4                 number.add(l.get(i));
5             }else word.add(l.get(i));
6         }
7         System.out.println("NUMBERCOUNT:  "+number.size());
8         System.out.println("WORDCOUNT:  "+word.size());
9     }//統計字符串和數字的個數

其中List.add(String str)往list中添加str。List.get(int index)用於獲得對象。

判斷字符串是否是數字有這麼幾種方法:

1.使用Character.isDigit(char)判斷

1 char num[] = str.toCharArray();//把字符串轉換為字符數組
2 StringBuffer title = new StringBuffer();//使用StringBuffer類,把非數字放到title中
3 StringBuffer hire = new StringBuffer();//把數字放到hire中
4 for (int i = 0; i < num.length; i++) {
5 // 判斷輸入的數字是否為數字還是字符
6 if (Character.isDigit(num[i])) {把字符串轉換為字符,再調用Character.isDigit(char)方法判斷是否是數字,是返回True,否則False
7 hire.append(num[i]);// 如果輸入的是數字,把它賦給hire} else {title.append(num[i]);// 如果輸入的是字符,把它賦給title}}}

 

2.使用類型轉換判斷

1 try {String str="123abc";
2 int num=Integer.valueOf(str);//把字符串強制轉換為數字
3 return true;//如果是數字,返回True
4 } catch (Exception e) {
5 return false;//如果拋出異常,返回False}

 

3.使用正則表達式判斷

String str = "";
boolean isNum = str.matches("[0-9]+");


//+表示1個或多個(如"3"或"225"),*表示0個或多個([0-9]*)(如""或"1"或"22"),?表示0個或1個([0-9]?)(如""或"7")
ps:這個方法只能用於判斷是否是正整數

 

筆者程序裡直接使用了第二種方法:

1     static boolean isnumber(String a){
2          try {
3                Integer.parseInt(a);//數字字符串轉換int型數字    “123”->123
4                return true;
5               } catch (Exception e) {
6                return false;
7               }
8     }//判斷是否為數字

Integer.parseInt(a)函數,如果a中含有非數字,就會拋出異常。return false。

排序函數是調用了collection下的一個sort自帶函數【很好用!】

1     //Collections.sort排序
2         Collections.sort(number);
3         Collections.sort(word);

這樣的話,number和word直接變成了有序從小到大排列的list。

排序其實還有一種方法,是通過調用compare函數。

完整程序:

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.List;
 4 import java.util.Scanner;
 5 
 6 
 7 public class classtest {
 8     
 9     
10     static List<String> number=new ArrayList<String>();
11     static List<String> word=new ArrayList<String>();
12     
13     
14     static void count(List<String> l){
15         for(int i=0;i<l.size();i++){
16             if(isnumber(l.get(i))){
17                 number.add(l.get(i));
18             }else word.add(l.get(i));
19         }
20         System.out.println("NUMBERCOUNT:  "+number.size());
21         System.out.println("WORDCOUNT:  "+word.size());
22     }//統計字符串和數字的個數
23     
24     
25     static boolean isnumber(String a){
26          try {
27                Integer.parseInt(a);//數字字符串轉換int型數字    “123”->123
28                return true;
29               } catch (Exception e) {
30                return false;
31               }
32     }//判斷是否為數字
33     
34 
35     
36     public static void main(String[] args) {
37         
38         System.out.println("please input the string");
39         Scanner get=new Scanner(System.in);
40         String str=get.nextLine();
41         System.out.println("string is "+str);//鍵盤獲取字符串
42         
43         java.util.List<String> list=new ArrayList<String>();//problem?
44         
45         String[] text = str.split(" ");
46         for(int i=0;i<text.length;i++){
47             list.add(text[i]);
48         }//存入list
49         
50         
51         classtest.count(list);
52     
53     //Collections.sort排序
54         Collections.sort(number);
55         Collections.sort(word);
56         System.out.println("number sort:"+number);
57         System.out.println("word sort:"+word);
58     }
59 
60 }

程序其實不難,但是由於自身對java的不熟悉,折騰了很久【差點砸電腦……】

程序運行結果:

好了……寶寶繼續做下一道題……

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved