import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Main { public static void main(String[] args) { //定义一个集合 Collection<String> its=new ArrayList<String>(); its.add("alibaba"); its.add("tenxun"); its.add("itcast"); //出现了小写的“itcast”字符串 its.add("baidu"); its.add("sohu"); its.add("netease"); //迭代器遍历集合 //获取集合的迭代器对象 Iterator<String> it =its.iterator(); //循环遍历 while(it.hasNext()) { String itname=it.next(); if("itcast".equals(itname)) //避免问题(常量在前面就不会有null的情况) { its.add("ITCAST"); //通过集合去添加 } } } }
代码结果: Exception in thread “main” java.util.ConcurrentModificationException(出现异常) at java.util.ArrayList$Itr.checkForComodification(Unknown Source) at java.util.ArrayList$Itr.next(Unknown Source) at Main.main(Main.java:21)
代码结果分析: 执行demo01()方法: 不使用泛型的话,编译时期没有错误,但是执行就会报错。 Exception in thread “main” java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at Main.demo01(Main.java:17) at Main.main(Main.java:4)
public class Main { public static void main(String[] args) { //创建一个Person Person p=new Person(); p.setAaa("123"); //创建一个Person<E> Person<String> pp=new Person<String>; pp.setAaa("ASD"); //可以设置String的
import java.util.Scanner; public class Collection { public static void main(String[] args){ Scanner input=new Scanner(System.in); int n=input.nextInt(); int[] a=new int[n]; a[1]=a[2]=1; int m=feibo(n)%10007; //最终的值除以10007求余数 System.out.println(m);
}
public static int feibo(int n){ if(n==1||n==2) //前两个的值需要给出,才能依次算出后面的值 return 1; else return (feibo(n-1)+feibo(n-2)); //递归主要思路 } }
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); int m=input.nextInt(); int[][] a=new int[n][m]; char[] b={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; //用下标方便的放入相对于的值
for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { int c=i-j; //求下标之差(可能有负数) int d=(Math.abs(c))%26; //求下标之差的绝对值(如果大于26行就需要求余) System.out.print(b[d]); } System.out.println(); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); long n=input.nextLong(); //定义了一个long型的数字 System.out.printf(Long.toHexString(n).toUpperCase()); //转换为十六进制数并且为大写字母
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); String num=input.nextLine(); Long da=Long.parseLong(num,16); System.out.println(da); } }
import java.util.Scanner; public class ReflectTest { public static void main(String[] args) { //用a和b的字符串数组存放时刻时间 String a[]={"zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"}; String b[]={"twenty","thirty","forty","fifty"};
//设置h和m为输入的分钟和小时数 Scanner input=new Scanner(System.in); int h=input.nextInt(); int m=input.nextInt(); if(m==0)//如果分钟为0的话就是只有小时 后面加o'clock { switch(h/10)//判断输出 { case 0:System.out.println(a[h%10]+" "+"o'clock");break; //直接在a数组找 case 1:System.out.println(a[h]+" "+" "+"o'clock");break;//直接在a数组找 case 2:System.out.println(b[0]+" "+a[h%10]+" "+"o'clock");break; //twenty+个位的 } } else { switch(h/10)//和if条件里面的相同 { case 0:System.out.print(a[h%10]);break; case 1:System.out.print(a[h]);break; case 2:System.out.print(b[0]+" "+a[h%10]);break; } switch(m/10) { case 0:System.out.print(" "+a[m%10]);break; case 1:System.out.print(" "+a[m]);break;//直接在a数组找 case 2:System.out.print(" "+b[0]+" "+a[m%10]);break; case 3:System.out.print(" "+b[1]+" "+a[m%10]);break; case 4:System.out.print(" "+b[2]+" "+a[m%10]);break; case 5:System.out.print(" "+b[3]+" "+a[m%10]);break; } } } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String s=input.next();//用字符串输入15位身份证 char[] a=s.toCharArray();//转成字符数组 int[] b=new int[16];//用16位去表示结果(17-1917只把1编程191) for(int i=0;i<a.length;i++) { b[i]=a[i];//把每一位传给int型数组b b[i]=b[i]-48;//必须减48才能从字符转为数字的0/1...9 } b[6]=b[6]+190;//将第一位x直接变成19x b[15]=(b[0]*7)+(b[1]*9)+(b[2]*10)+(b[3]*5)+(b[4]*8)+(b[5]*4)+2+9+((b[6]%10)*6)+(b[7]*3)+(b[8]*7)+(b[9]*9)+(b[10]*10)+(b[11]*5)+(b[12]*8)+(b[13]*4)+(b[14]*2);//注意我现在的只有16位(每一位对应的乘要变化) b[15]=b[15]%11;//计算出来之后对11取余 switch (b[15])//依次判断出最后一位是什么 { case 0:b[15]=1;break; case 1:b[15]=0;break; case 2:b[15]=-1;break; //先用-1代替x case 3:b[15]=9;break; case 4:b[15]=8;break; case 5:b[15]=7;break; case 6:b[15]=6;break; case 7:b[15]=5;break; case 8:b[15]=4;break; case 9:b[15]=3;break; case 10:b[15]=2;break; }
十七、不同单词个数统计(split()方法) 问题描述 编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“one little two little three little boys”,总共有5个不同的单词:one, little, two, three, boys。 说明:(1)由于句子当中包含有空格,所以应该用gets函数来输入这个句子;(2)输入的句子当中只包含英文字符和空格,单词之间用一个空格隔开;(3)不用考虑单词的大小写,假设输入的都是小写字符;(4)句子长度不超过100个字符。 输入格式:输入只有一行,即一个英文句子。 输出格式:输出只有一行,是一个整数,表示句子中不同单词的个数。 输入输出样例 样例输入 one little two little three little boys 样例输出 5
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String s = input.nextLine();//用nextLine格式输入要判断的字符串 String[] a = s.split(" ");//用split方法得到每个单词 int sum = 0;//计数 for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++)//二重循环依次判断 { if (a[i].equals(a[j])) { a[j] = " ";//将相同的其中一个单词换成空格 } } } for (int i = 0; i < a.length; i++) { if(a[i]!=" ") sum++;//输出不是空格的位置的单词数量 } System.out.println(sum); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String s1 = input.next();//输入要判断的字符串s1 String[] a = s1.split("");//利用split方法隔成字符串数组a String[] b = new String[a.length];//创建一个字符串数组b int j = 0; for (int i = a.length - 1; i >= 0; i--) { b[j++] = a[i]; //反序把a输入到b里面 }
StringBuffer s2 = new StringBuffer();//使用StringBuffer 创建一个字符串s2 for (String i : b) { s2.append(i);//增强for循环将字符串数组转成字符串 }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String s = input.next(); System.out.println("Hex: Ox" + s);
Long shi = Long.parseLong(s, 16);//转成十进制 System.out.println("Decimal: " + shi);
String ba = Integer.toOctalString(Integer.valueOf(s, 16));//转成8进制 char[] a = ba.toCharArray(); int cha = 4 - a.length; if (cha == 0) { System.out.println("Octal: " +ba); } if (cha == 1) { System.out.println("Octal: 0" +ba); } if (cha == 2) { System.out.println("Octal: 00" +ba); } if (cha == 3) { System.out.println("Octal: 000" +ba); }
public class Main { public static void main(String[] args) { //创建一个集合对象(多态) Collection<String> names=new ArrayList<String>(); //添加 names.add("郭德纲"); names.add("刘德华"); names.add("柳岩"); names.add("范伟");
interface comparator{ int compare(int a,int b); //抽象方法 }
定义实现类(Mycomparator):
1 2 3 4 5 6
class Mycomparator implements comparator{ //实现类必须实现接口里面的所有抽象方法 @override public int compare(int a,int b){ return a-b; } }
1.使用接口实现类
1 2 3 4 5 6
public class ChengXu{ public static void main(String[] args){ comparator comparator1=new Mycomparator(); //多态(左边父类,右边子类) 编译在左,实现在右 comparator1.compare; } }
2.使用匿名接口类
1 2 3 4 5 6 7 8 9 10
public class ChengXu{ public static void main(String[] args){ comparator comparator2=new comparator(){ //哪个接口要实现就写哪个接口的匿名抽象类 @override public int compare(int a,int b){ return a-b; } } } }
3.使用Lambda表达式
1 2 3 4 5
public class ChengXu{ public static void main(String[] args){ comparator comparator3=(a,b) ->a-b; } }
一、两地调度: 公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。 返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。 示例: 输入:[[10,20],[30,200],[400,50],[30,20]] 输出:110 解释: 第一个人去 A 市,费用为 10。 第二个人去 A 市,费用为 30。 第三个人去 B 市,费用为 50。 第四个人去 B 市,费用为 20。
public int jump(int[] a) { int sum = 0; int zy = 0; // 能跳到的最远距离 int max = 0; // 下一步可以跳到的最远距离 for(int i = 0; i < a.length - 1; i++) { max = Math.max(max, i + a[i]); // 更新当前点 if(i == zy) { zy = max; sum++; } } return sum; }