2016.5.5【i码邦】每日一练--数字统计

 编程实现:下图问题。  不限形式,不限格局,百花齐放才是编程的春天!!
 
希望今天看到更灿烂的代码!
 

tu0505.jpg

=========编程学习,需要练习,只有动手,才能检验你的所学知识==============
 
动手才是王道,i码邦每日一练直播,将出练习直播视频,讲解源码编程思路。
 
===========感谢东神提供这么好的练习题,大家加油哦============

--来自网页客户端
宣传图片22.jpg
已邀请:

ttttt

赞同来自: 未探索的星球 金子

import java.util.*;
public class Test001 {
public static void main(String args) {
Scanner sc=new Scanner(System.in);
int num;
List<Integer> list=new ArrayList<Integer>();
for(;;){
num=sc.nextInt();
if (num>0&&num<=100) {
list.add(num);
} else {
if (num==0) {
break;
}
}
}
sc.close();
Iterator<Integer> it=list.iterator();
while (it.hasNext()) {
System.out.print(it.next()+" ");
}
System.out.println();
Set<Integer> newset=new HashSet<Integer>(list);
for (Integer temp : newset) {
System.out.println(temp + " occurs " + Collections.frequency(list, temp)+
((Collections.frequency(list, temp)==1)?" time ":" times "));
}
}
}

QQ截图20160505151146.png



--来自网页客户端

fengyun12

赞同来自: admin shao siman

/**
* 每日一练 20160505
* 计算数字出现的次数,读取1到100之间的整数,然后计算每个数出现
* 的次数,输入0结束
*/
public void ex160505(){
Scanner readin=new Scanner(System.in); //设定控制台读入流
ArrayList<Integer> list=new ArrayList<Integer>();
System.out.println("请输入1-100之间的整数,输入0退出:");

do{

int a=0;
if(readin.hasNextInt()){
a=readin.nextInt();
}
else {
System.out.println("输入数据有问题");
break;
}

if(a==0){
break;
}
if(a>=1 && a<=100){
list.add(a);
}
else{
System.out.println("您输入的数据错误,请输入1-100之间的整数");
}
}while(true);
readin.close();
while(list.size()>0){
int a=list.get(0);
int count=0;
for(int i=0;i<list.size();i++){
if(a==list.get(i)){
list.remove(i);
count++;
i--;
}
}
System.out.println(a+" occurs "+count+(count==1?" time":" times"));
}

}

--来自移动客户端

未探索的星球 - まあ、どうせ俺は醜いものだろう

赞同来自:

import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;

public class Test0505 {
    /* 
     * (计算数字的出现次数)编写程序,读取在1到100之间的整数,然后计算每个数出现的次数。
     * 假定输入是以0结束的。下面就是这个程序的运行示例:
     * Enter the integers between 1 and 100: 2 5 6 5 4 3 23 43 2 0
     * 2 occurs 2 times
     * 3 occurs 1 time
     * 4 occurs 1 time
     * 5 occurs 2 times
     * 6 occurs 1 time
     * 23 occurs 1 time
     * 43 occurs 1 time
     * 提示:如果一个数出现次数大于一次,输出时使用复数“times”。
     * (counts[i] == 1) ? " time" : " times")
     * 
     */
    public static void main(String[] args) {
        // 问题:
        //    1. 我们需要一个容器来保存这些数据,而且数据是一一对应的,例如 数字 (1) 出现了 (2) 次
        //
        // 想法:
        //    1. 可否使用键值对的方式来存储
        //
        // 判断思路:
        //    ?在1和100之间:
        //        ?不在 map 的键中:
        //            把这个值放入map中,作为键,值+1
        //         ?在 map 的键中:
        //          把这个键值 + 1
        //    ?不在1和100之间:
        //        不做任何操作
        //
        // 涉及到的操作:
        //        1. 如何创建和关闭控制台输入流
        //        2. 如何获得输入流得到的数据
        //        3. 如何创建Map集合
        //        4. 如何向Map集合中添加键值
        //        5. 如何修改Map集合中的键值
        //        6. 如何遍历Map集合中的键值

        Scanner input = new Scanner(System.in);                  // Step.1
        Map<String, Integer> maps = new Hashtable<>();        // Step.3
        int num = 0;
        while ((num = input.nextInt()) != 0) {                     // Step.2 
            if (num >= 1 && num <= 100) {
                String numKey = String.valueOf(num);
                if (!maps.containsKey(numKey)) {
                    maps.put(numKey, 1);                        // Step.4
                } else {
                    maps.put(numKey, maps.get(numKey) + 1);        // Step.5
                }
            }
        }

        /*
         *  Step.6
         */
        Iterator<String> iterator = maps.keySet().iterator();
        while (iterator.hasNext()) {
            String key = iterator.next();
            int value = maps.get(key);
            
            // 按格式输出字符串
            System.out.println(key + " occurs " + value + (value % 2 == 0? " times" : " time"));
        }
        input.close();
    }
}

0505.png

 
现在遇到的问题是 HashMap 中的 Key(String) 无法排序输出,请各位大神请教

--来自网页客户端

lanlan2501 - 上善若水任方圆

赞同来自:

/*
计算数字出现次数
读取1到100之间的整数
然后计算每个出现的次数,输入是以0结束的
enter the intergers between 1 and 100:

2 occurs 1 times
即:如果一个数出现次数大于1次,输出时使用复数“times”
(counts[i]==1)? "time":"times"

*/

/*
思路:获取输入的数字,c中用scanf,java中用?
当获取到的数字是0时,break;for or while更合适?
编译获取到的这一个int数组中,每个数字 出现的次数
*/
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException; 
import java.io.*;
public class Ex0505{
    public static void main(String[] args)throws IOException{
        System.out.println("enter the intergers between 1 and 100:");
             
        
        //char a = (char) System.in.read();
        //System.out.println("\t\t"+"a="+a+"\t\t");
        //;//.intValue();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = null;
        str = br.readLine();            
        System.out.println("your value is :"+str);
        String[] ss = new String[100];
        ss = str.split(" ");
        int num[]= new int[30];
        int i;
        int k =0;
        int each[] =new int[30];
        int count[] = new int[30];
        
        for (i=0; i<ss.length; i++){
            
            //if(ss[i] == "\r") break;
            num[i] = Integer.parseInt(ss[i]);
            //System.out.println("\t\t"+"ss["+i+"]="+ss[i]+"\t\t"+"occurs");
            //System.out.println("\t\t"+"num["+i+"]="+num[i]+"\t\t"+"occurs");
            
        }
        boolean ab = true;
        each[k] = num[0];
        count[k] = 1;
        for(int j=1; j<i;j++)    {
            boolean l =true;    
            if (( num[j] < 1)||( num[j] > 100)){
                System.out.println(" wrong number !num["+j+"]="+num[j]+" plese put the intergers between 1 and 100!!!");
                ab = false;
                break;
            }
                     
            else{
                for(int m=0;m <= k;m++){
                    //System.out.println(" for m 里num["+j+"]="+num[j]);
                    if(num[j] == each[m]){
                        count[m]++;    
                       // System.out.println(" for m 里count["+m+"]="+count[m]+"\t\t each["+m+"]="+each[m]);
                        l = false;
                        break;
                    }
                        
                }

                if(l){
                    k++;
                    each[k]=num[j] ;
                    count[k] = 1;
                    // System.out.println(" k ++count["+k+"]="+count[k]+"\t\t each["+k+"]="+each[k]);
                    
                }
                
                        
                
            }
              
        }
            
            
        if(ab){
            for(int m=0;m <k+1;m++){
            if(count[m]==1)
                System.out.println("\t\t"+each[m]+"\t\t"+"occurs"+count[m]+"time");
            else
                System.out.println("\t\t"+each[m]+"\t\t"+"occurs"+count[m]+"times");
            //System.out.println("enter the intergers between 1 and 100:");
        }
        }
        
    }    
            
}

要回复问题请先登录注册

Template error, template file not found