Java编程

java算法题牛客网

public StringBuffer delete(int start, int end) — 删去start到end-1位置的内容;

public class testClockwiseOutput { //顺时针打印一个矩阵 @Test public void test(){ int[][] num = new int[100][100]; int n = 4; int count =1; for(int i=0;i=end。

java算法题牛客网

end<=0)return; for(int i=start;i<=end;i++){System.out.println(num[start][i]);} for(int i=start+1;i<=end;i++){System.out.println(num[i][end]);} for(int i=end-1;i>=start;i–){System.out.println(num[end][i]);} for(int i=end-1;i>start;i–){System.out.println(num[i][start]);}output(num,start+1,end-1);}}题目二:给出一个排序好的数组和一个数,求数组中连续元素的和等于所给数的子数组。

同时,使用多线程,可以简化我们对复杂任务的处理逻辑,降低业务模型的复杂程度。因此并发编程对于提高服务器的资源利用率、提高系统吞吐量、降低编码难度等方面起着至关重要的作用。以上是并发编程的优点,但是它同样引入了一个很重要的问题:线程安全。什么是线程安全问题线程在并发执行时,因为cpu的调度等原因,线程会交替执行。如下图例子所示[Java] 纯文本查看 复制代码public class SelfIncremental {private static int count;public static void main(String[] args) {Thread thread1 = new Thread(() -> {for (int i = 0; i< 10000; i++) {count++;System.out.println(count);}});Thread thread2 = new Thread(() -> {for (int i = 0; i< 10000; i++) {count++;System.out.println(count);}});thread1.start();thread2.start();}}。

b<0) throw new NegativeIntegerException(); int y=0; int x=getMaxCommonDivisor(a,b); y=(a*b)/x; return y; } } public class Example{ public static void main (String arg[]){ int maxCommonDivisor, minCommonMultiple; MaxCommonDivisor max=new MaxCommonDivisor(); MinCommonMultiple min = new MinCommonMultiple(); try{ maxCommonDivisor=max.getMaxCommonDivisor(18,12); System.out.println("最大公约数: "+ maxCommonDivisor); minCommonMultiple=min.getMinCommonMultiple(18,12); System.out.println("最小公倍数: "+minCommonMultiple); maxCommonDivisor=max.getMaxCommonDivisor(-64,48); System.out.println("最大公约数: "+maxCommonDivisor); } catch(NegativeIntegerException e){ System.out.println(e.toString()); } } } 3。编写一个类要求实现一个接口,该接口有 3 个 abstract 方法: Public abstract void f( int x); Public abstract void g(int x, int y); Public abstract double h(double x); 要求在应用程序主类中使用该类创建对象,并使用接口回调调用方法 f(), g() 和 h(). 解: interface A{public abstract void f(int x); public abstract void g(int x,int y); public abstract double h(double x); } class A1 implements A{ public void f(int x){ System.out.println(x); } public void g(int x,int y){ int z=x+y; System.out.println(z); } public double h(double x){ return x*x; } } class A2 implements A{ public void f(int x){ System.out.println("Hello:"+x); } public void g(int x,int y){ int z=x-y; System.out.println(z); } public double h(double x){ return Math.sqrt(x); } } class A3 implements A{ public void f(int x){ System.out.println("你好:"+x); } public void g(int x,int y){ double z=(double)x/y; System.out.println(z); } public double h(double x){ return 1/x; } } public class ZuoYe5_3{ public static void main(String args[ ]){ A a=new A1(); a.f(10);a.g(12,20); System.out.println(a.h(100)); a=new A2(); a.f(10); a.g(12,20); System.out.println(a.h(100)); a=new A3(); a.f(10); a.g(12,20); System.out.println(a.h(100)); } } 利用面向接口编程的方法, 编写计算锥形体积的完整程序, 注意锥形的底可以为圆形, 矩形, 或梯形等。 (对细节满足开闭原则。 ) 4 求下列程序运行结果: class A{ public double y=11.456789; public void f(){ y=y+1; System.out.printf("y 是 double 型的变量,y=%f\n",y); } } class B extends A{ int y=0; public void g(){ y=y+100; System.out.printf("y 是 int 型的变量 ,y=%d\n",y); } } class Example5_3{ public static void main(String args[ ]){ B b=new B(); b.y=200; b.g(); b.f(); } } // 调用子类新增的方法 //调用子类继承的方法5.求下列程序运行结果 class A{ int m=0,n=0; long f(){ return m+n; } } class B extends A{ int m=1,n=1; long f(){ long result=0; super.m=10; super.n=20; result=super.f()+(m+n); return result; } long g(){ long result=0; result=super.f(); return result/2; } } public class Example5_7{ public static void main(String args[ ]){ B b=new B(); b.m=3; b.n=7; long resultOne=b.g(); long resultTwo=b.f(); long resultThree=b.g(); System.out.println("resultOne="+resultOne); System.out.println("resultTwo="+resultTwo); System.out.println("resultThree="+resultThree); } }(6) 即所谓的开闭原则,对_________关闭,对______________开放。 答: 修改,扩展 (7)编写一个面向抽象的完整程序,求柱形体积,计算方法底*高,但底面积的算法经常要 变化。于是对于求底面积可以设一个抽象类 Geometry 。柱形面对具有抽象类的 Geometry 设计。最后完成对圆形底面积的柱形,和梯形底面积的柱形计算体积。 (8)求下列程序的运行结果。 interface Show{ void show(); } class A implements Show{ public void show(){ System.out.println("I love This Game"); } } class B implements Show{ public void show(){ System.out.println("我喜欢看 NBA"); } } class C{ public void f(Show s){ s.show(); } // 接口作为参数} public class Example5_13{ public static void main(String args[]){ C c=new C(); c.f(new A()); c.f(new B()); } } 答: I love This Game 我喜欢看 NBA (9)写出下面程序的运行结果: public class Example5_18{ public static void main(String args[ ]){ int n=0,m=0,t=0;try{ t=9999; m=Integer.parseInt("8888"); n=Integer.parseInt("12s3a"); //发生异常,转向 catch System.out.println("我没有机会输出 "); } catch(Exception e){ System.out.println("发生异常 "); n=123; } System.out.println("n="+n+",m="+m+",t="+t); } } 答:发生异常 n=123, m=8888, t=9999第六章 字符串和正则表达式1。对于字符串 String S1=new String(“ OK”); String S2=new String(“ OK”); 说出下列表达式的值: S1==S2 S1.equals(S2) 答: (1) false (2) true 2.对于字符串 String s1=new String(“I love you zhht”); String s2=s1.replaceAll(“love” ,”hate ”); 说出 System.out.printf(“%s, %s”, s1,s2)的结果。 结果:I love。

public void removeAllElement(int e) {int count = findAll(e);for(int i = 0 ; i < count ; i ++) {removeElement(e);}}public int findAll(int e) {//这个方法进行元素出现次数的统计int count = 0 ;for(int i = 0 ; i < size ; i++) {if(data[i] == e)count ++ ;}return count;}//这个方法是根据用户传来的元素,进行查找,如果数组存在这个元素就进行删除public void removeElement(int e) {int index = find(e);if(index != -1)remove(index);}哇!!!突然发现老师录制视频是真的好不容易,而且还有大量的ppt动画演示效果,还要组织语言,如何更加通俗易懂,我就打了这么点东西,都感觉花费好长的时间,主要是想着怎么组织语言,虽然我不是讲课,hh,但是万一有人看呢,我希望别人看的懂啊,以后我自己再来看,我也希望自己能看懂,不过我觉得我还是说的挺乱的,不管了!!

public class Test03 { public static void main(String[] args) { int[] arr = { 25, 24, 12, 76, 101, 96, 28 }; for (int i = 0; i < arr.length - 1; i++) { // 定义内层循环 for (int j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 比较相邻元素 // 下面的三行代码用于交换两个元素 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); // 打印元素和空格 } } }。

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){}       而surfaceDestroyed方法中,主要实现的是界面被销毁时才调用,这里我们停止了当前的线程所处理的任务,这里使用了线程的join方法:

(num != 0 && lowerletters != 0 && elseletters != 0 )) {return true;}else {return false;}}public static boolean check_repeat ( String str ) {int num = 0;for ( int i = 3 ; i <= str.length()/2 ; i++ ) {for ( int j = 0 ; j < str.length() - i ; j++ ) {String s = str.substring(j, j + i );if ( str.indexOf(s) != str.lastIndexOf(s) ) {num++;}}}if ( num == 0) {return true;}else {return false;。

public static int[] mergeSort(int[] c, int start, int last) {if (last > start) {// 也可以是(start+last)/2,这样写是为了防止数组长度很大造成两者相加超过int范围,导致溢出int mid = start + (last – start) / 2;mergeSort(c, start, mid);// 左边数组排序mergeSort(c, mid + 1, last);// 右边数组排序merge(c, start, mid, last);// 合并左右数组}return c;}public static void merge(int[] c, int start, int mid, int last) {int[] temp = new int[last – start + 1];// 定义临时数组int i = start;// 定义左边数组的下标int j = mid + 1;// 定义右边数组的下标int k = 0;while (i <= mid && j <= last) {if (c[i] < c[j]) {temp[k++] = c[i++];} else {temp[k++] = c[j++];}}// 把左边剩余数组元素移入新数组中while (i <= mid) {temp[k++] = c[i++];}// 把右边剩余数组元素移入到新数组中while (j <= last) {temp[k++] = c[j++];}// 把新数组中的数覆盖到c数组中for (int k2 = 0; k2 < temp.length; k2++) {c[k2 + start] = temp[k2];}} 测试:

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注