JAVA面试编程题1

学习一:StringTokenizer的应用
StringTokenizer是对string类型中有分隔号的应用。其 构造函数如下:
1. StringTokenizer(String str) :构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(\r’)”。
2. StringTokenizer(String str, String delim) :构造一个用来解析strStringTokenizer对象,并提供一个指定的分隔符。如new StringTokenizer("A|001:B|002:C|003",":");
3. StringTokenizer(String str, String delim, boolean returnDelims) :构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。
StringTokenizer的 方法
说明:
1. 所有方法均为public;
2. 书写格式:[修饰符] <返回类型> <方法名([参数列表])

1. int countTokens() :返回nextToken方法被调用的次数。如果采用构造函数1和2,返回的就是分隔符数量(例2)。
2. boolean hasMoreTokens() :返回是否还有分隔符。
3. boolean hasMoreElements() :结果同2。
4. String nextToken() :返回从当前位置到下一个分隔符的字符串。
5. Object nextElement() :结果同4。
6. String nextToken(String delim) :与4类似,以指定的分隔符返回结果。
示例如下:
import java.io.*;
import java.util.*;
public class bitwiseOperate {
public static void  main(String[] args){
   String abc="abc|def|efg|d||aaa|sadfsd||fsdf";
       StringTokenizer st=new StringTokenizer(abc,"|");
        for(int i=0;st.hasMoreTokens();i++){
         System.out.println("result : "+st.nextToken());
        }
        String[] str_abc=abc.split("|");
        for (int j=0;j<str_abc.length;j++){
         System.out.println("split() result : "+str_abc[j]);
        }
}
}

学习二:编程应用,如题:现在输入n个数字,以逗号,分开;然后可选择升或者降序排序,显示最后的结果,原题是要在另一个页面显示选择是升序还是降序并输出排序结果,且有reset要求,程序如下,升序排列用的是冒泡排序算法:
import java.io.*;
import java.util.*;
import java.util.Arrays;
public class Sort {
public static void toDescending(int[] array){
int i,j,t;
for(i=0;i<array.length;i++)
for(j=0;j<array.length-i-1;j++)
{
if(array[j]>array[j+1])
{
t=array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
for(i=array.length-1;i>=0;i--)
{
System.out.print(array[i]);
System.out.print("  ");
}

}
public static void toAscending(int[] array){
Arrays.sort(array);
for(int i=0;i<array.length;i++)
{
System.out.print(array[i]);
System.out.print("  ");
}

}
public static void main(String args[]){
String str="",input="";
int[] origin;
System.out.println("请输入一组数学,以逗号分开");
try{
do{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
str=br.readLine();
}while(str.length()<1);
}catch(Exception e){
e.printStackTrace();
}
try{
StringTokenizer st=new StringTokenizer(str,",");
origin=new int[st.countTokens()];
for(int i=0;st.hasMoreTokens();i++){
         origin[i]=new Integer(st.nextToken()).intValue();
         System.out.println("origin:"+origin[i]);
        }
}catch(Exception e){
System.out.println("转化失败!");
return;
}
System.out.println("请选择排序方式:A表示升序,B表示降序");
try{
input=new BufferedReader(new InputStreamReader(System.in)).readLine().toLowerCase();
}catch(Exception e){
e.printStackTrace();
}
if(input.equals("a"))
{
System.out.println("升序排列后为");
toAscending(origin);
}
else if(input.equals("b"))
{
System.out.println("降序排列后为");
toDescending(origin);
}
else System.out.println("您输入了一个错误符号,请输入A或B");
}

}
最后在运行之后,出现越界问题,原来出错在for语句中for(i=array.length-1;i>=0;i--),冒泡排序两条语句需要深刻领悟:
for(i=0;i<array.length;i++)
for(j=0;j<array.length-i-1;j++)
PS:今天完成的不错,不过一直看《棋魂》到八点半很不该,控制自己哈

你可能感兴趣的:(java,编程,面试,J#)