import java.io.*;
import java.util.*;
class FindChar
{
/*public static void find(char [] ch,char ch1) //这个方法由于使用的Arrays.binarySearch()方法在使用前需要排序,那样就不能够正确返回所需要的结果。
{
char [] c=new char[1024];
char ch0;
c=ch;
ch0=ch1;
if(c==null||(c!=null&&c.length==0))
{
System.out.println("The arrary is null!");
throw new IllegalArgumentException();
}
else if(c[0]==ch1)
{
System.out.println("The ch1's postion:"+0);
}
else
{
System.out.println("The ch1's postion:"+Arrays.binarySearch(c,ch1));
}
}*/
public static void find(char [] ch,char ch1)
{
char [] c=new char[1024];
char ch0;
int i;
c=ch;
ch0=ch1;
boolean firstChar=false;
if(c==null||(c!=null&&c.length==0))
{
System.out.println("The arrary is null!");
throw new IllegalArgumentException();
}
else
for(i=0;i
if(firstChar==false&&c[i]==ch0)
{
firstChar=true;
System.out.println("The ch1's postion:"+i);
}
}
if(firstChar==false)
System.out.println(-1);
}
public static void main(String[] args)
{
//下边重新开始新的代码编写。
//这个当中遇到的一些问题:
//1、char数组的附值问题。误以为是ch={a,b,c,x}这种方式附值。
//2、对类的初始化顺序要不要的进行强化
char [] ch=new char[10];
char ch1='x';
//ch={'c'};
//find(ch,ch1);
//ch={a,b,c,x};原来这种附值方式是int型数组附值的方式,难怪会报错。
ch="abx".toCharArray();
find(ch,ch1);
ch="axbxab".toCharArray();//这种情况他所查找的字符位置就会问题,但下边那情况就不会出问题,不知道这是什么原因造成的。
System.out.println(ch.length);//上述问题这所以会出现是由于我使用binarySearch()方法的原因,因为他在查找所要的字符时是以
find(ch,ch1);
ch="ax xx".toCharArray();
find(ch,ch1);
ch="zab".toCharArray();
find(ch,ch1);
ch="".toCharArray();
find(ch,ch1);
/*下边的代码是第一次经过大约两天的时间写的,当中出现了许多的问题,刚开始尝试利用Vector类来做,没有成功,后经查资料,利用Arrays类来做,但对报出异常这个问题
理解不够透彻,经咨询传智博客的老师才得知问题的症结所在,其实有许多东西不是你不可能做出来,关键在于你对概念的理解程度。其实我在写这个程序时一直都在试探该去怎么做
因为我根本就不知道怎么样才能做,只是看着问题,根据他的思路,去找解决问题的方法,试探性的去解决。出了问题然后再去想为什么,这恐怕也是一个必经的过程,至少在打劳基础的
时候是非常需要的。另外有一个知识点就是:怎么样来判断数组为空这个问题很重要。
/*FindChar fc=new FindChar();
String str=null;
char [] ch=new char[1024];
char ch1=0;
System.out.println("Please input the char sequence :");
try
{
BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
str=bfr.readLine();
ch=str.toCharArray();
}
catch (Exception e )
{
e.printStackTrace();
}
System.out.println("Please input the char :");
try
{
ch1=(char)System.in.read();
}
catch (Exception e )
{
e.printStackTrace();
}
fc.find(ch,ch1);*/
}
}
能过上面的这个程序的编写,我体会到了一些新的问题。
首先:解决问题的思路太过单一,一直就只是想着Java类中会不会这这样的方法,当然能够找到这样的方法也会
学到不少东西,同时也是对Java基本类的理解和认识,但不能仅停留在这样一个表面,想通过一个方法就搞定一个
问题,这种思想,不可取。以后的思路是这样一个过程,拿到一个问题,首先要分析出他解决问题的思路,当然这
个问题已经给出了思路,这点在解决问题当中是必不可少的。其次尽量通过各种方式,利用Java中的类来解决目前
的问题。
其次:刚开始的问题要不断的尝试,然后从中总结经验。