编写一个Java应用程序,对用户输入的任意一组字符如{1,3,4,7,2,1,1,5,2},输出其中出现次数最多且数值最大的字符,并显示其出现次数。它的源代码是这样的:
import java.io.*;
import java.util.*;class test1
{
public static void main(String args[]) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一组字符,字符间用,间隔");
String strInput=br.readLine();
StringTokenizer st=new StringTokenizer(strInput,",");
int array[]=new int[10];
int max=0; int maxNumber=0;
while(st.hasMoreTokens())
{
String token=st.nextToken();
int number=Integer.parseInt(token);
array[number]++;
if(array[number]>max)
{
max=array[number];
maxNumber=number;
}
else if(array[number]==max)
{
if(number>maxNumber)
maxNumber=number;
}
}
System.out.println("出现次数最多的数字是:"+maxNumber);
System.out.println("出现次数为:"+max);
}
}
我想问一下在while循环中对数子的比较和判断找出最大数和气出现次数是一种怎样的思维,编程思想。这种发发好像很深奥似的。求更简单的方法!
import java.io.*;
import java.util.*;class test1
{
public static void main(String args[]) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一组字符,字符间用,间隔");
String strInput=br.readLine();
StringTokenizer st=new StringTokenizer(strInput,",");
int array[]=new int[10];
int max=0; int maxNumber=0;
while(st.hasMoreTokens())
{
String token=st.nextToken();
int number=Integer.parseInt(token);
array[number]++;
if(array[number]>max)
{
max=array[number];
maxNumber=number;
}
else if(array[number]==max)
{
if(number>maxNumber)
maxNumber=number;
}
}
System.out.println("出现次数最多的数字是:"+maxNumber);
System.out.println("出现次数为:"+max);
}
}
我想问一下在while循环中对数子的比较和判断找出最大数和气出现次数是一种怎样的思维,编程思想。这种发发好像很深奥似的。求更简单的方法!
解决方案 »
- Java小程序的问题,用Canvas类实现验证码的效果,请大伙们指教
- oracle问题 在线等
- java怎么调用 unix的pipe啊?
- 这个java正则表达式怎么写
- 在ECLIPSE里按什么快捷键可以找到对应的方法在什么地方?
- executeBatch() 对于数据库来说是一条SQL还是多条?
- 新手提问:各位大虾,能否给小弟详细介绍一下java中的sdk、jdk、jre这些名词?
- 简单问题,给20分,安装过Jcreator的请进!!!
- 各位高手:怎样用java applet 操纵DHTML ? 恳请指教,高分在所不惜,要多少加多少!!
- 多个数组之间的排列组合形成一个大数组,如何解决新数组过大的问题
- 最近想比较细致的学习一下java,请各位大牛指点
- 字符串问题
这个算法实现的是:array[num]代表的是num出现的次数,既他的想法是数组的下标存储的是字符,而数组元素的值存储的是字符出现的字数。
看似合理,其实有缺陷和bug.利用下标存储字符,那么,你随便输入一个大于下标的数字,例如99,就会出现数组越界的异常:
1,3,4,99,2,1,1,5,2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 99
at com.bob.test1.test1.main(test1.java:32)这个问题其实很难的,网上搜出的设计到很多数组,排序,红黑树什么的知识。至于怎么修改,有点难,挺复杂的,这个问题。有时间再想想怎么写。Thank you in advance for giving me credits。