不含0的字符串,将相邻数字相加的和为n的数字打印出来
列如:str="1223456789"  n=5
123
23
5Class.forName的作用是什么 为什么要用多线程有几种实现方式  JAVA类任何保证线程安全  ThreadLocal的用法以及适用场景写一个冒泡排序的程序 写一个其他排序方法的思想及特点

解决方案 »

  1.   

    JAVA类如何保证线程安全
      

  2.   

    相邻数字相加的和为n的数字打印出来 
    列如:str="1223456789"  n=5 
    123 123好象不相邻 和也不是5吧
      

  3.   

    问题一:
    谈下思路,两层循环,外层,从第1位数字开始(用i标记),内层从i后一位数字开始(用j标记,初始j=i+1)相邻数字的和为s(每一次进入内循环置为s=a[i]):s=s+a[j];用临时变量空间来存储从a[i]开始的数字
    1.如果s<5,则将a[j]放入临时变量空间,j++继续,
    2.如果s>=5,则跳出内循环
    3.如果s=5,则输出这个临时空间里的数字,否者不输出,然后清空该临时变量空间。
      

  4.   

    估计是122吧
    Java线程有两种方式
    如何保证线程安全的:同步与锁机制
      

  5.   

    问题二:Class.forName是用来取得指定名称类对应的Class对象。这样可以通过该类的Class对象来创建类实例对象或者获取该类的属性、方法等,详见Java反射机制。
      

  6.   

    问题三:java实现多线程有两种方式:通过继承class Thread或实现Runnable接口。
    java如何保证线程安全的:1.同步与锁机制;2.互斥信号量
    ThreadLocal是thread local variable(线程局部变量)。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。ThreadLocal就从另一个角度来解决多线程的并发访问,ThreadLocal会为每一个线程维护一个和该线程绑定的变量的副本,从而隔离了多个线程的数据,每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的整个变量封装进ThreadLocal,或者把该对象的特定于线程的状态封装进ThreadLocal。所以,如果你需要进行多个线程之间进行通信,则使用同步机制;如果需要隔离多个线程之间的共享冲突,可以使用ThreadLocal,这将极大地简化你的程序,使程序更加易读、简洁。
      

  7.   

    1.不含0的字符串,将相邻数字相加的和为n的数字打印出来public class WriterExam
    {
    public static void getNFromStr(String str, int n)
    {
    byte b[] = str.getBytes();
    int bLen = b.length;
    for (int i = 0; i < bLen - 1; i++)
    {
    int idigit = b[i] - 48; // ascii码转成对应的数字
    if (idigit == n)
    System.out.println(idigit);
    for (int j = 0; j < bLen; j++)
    {
    int jdigit = b[j] - 48; // ascii码转成对应的数字
    if ((idigit + jdigit) == n && j == i + 1)
    System.out.println(idigit + "" + jdigit);
    }
    }
    } public static void main(String[] args)
    {
    String str = "1223256143";
    int n = 5;
    getNFromStr(str, n);
    }
    }
    运行结果如下:
    23
    32
    5
    14
      

  8.   

    相邻的数如果个数不受限制的话,那就改成如下代码:
    public class WriterExam
    {
        public static void getNFromStr(String str, int n)
        {
            byte b[] = str.getBytes();
            int bLen = b.length;
            for (int i = 0; i < bLen - 1; i++)
            {
                int idigit = b[i] - 48; // ascii码转成对应的数字
                 if (idigit == n)
                {
                    System.out.println(idigit);
                    continue;
                }
                int jdit[] = new int[bLen - i - 1]; // 动态分配数组
                  int temp = idigit;
                for (int j = i + 1, k = 0; j < bLen; j++, k++)
                {
                    int jdigit = b[j] - 48; // ascii码转成对应的数字
                      jdit[k] = jdigit;
                    temp = temp + jdigit;
                    if (temp == n)
                    {
                        System.out.print(idigit);
                        int x = 0;
                        while (x <= k)
                        System.out.print(jdit[x++]);
                        System.out.println();
                    }
                }
            }
        }    public static void main(String[] args)
        {
            String str = "1223256143";
            int n = 5;
            getNFromStr(str, n);
        }
    }
      

  9.   


    public class Test 

          public static void main(String[] args) 
          { 
           String s="122345678";
           int n=5;
           for(int i=0;i<s.length();i++){
           int temp=Integer.parseInt(String.valueOf(s.substring(i, i+1)));
           if(temp>n){
           continue;
           }
           if(temp==n){
           System.out.println(n);
           }
           for(int j=i+1;j<s.length();j++){
           temp+=Integer.parseInt(String.valueOf(s.substring(j, j+1)));
           if(temp>n){
           break;
           }
           if(temp==n){
           for(int k=i;k<=j;k++){
           System.out.print(s.substring(k, k+1));
           }
           System.out.println();
           }
           
           }
           
           }
          } 
    }LZ看看这个
      

  10.   

    我也来,当然,楼上2个方法更好些:public class Test {    public static void main(String[] args) {
            String str="1223456789";
            int n=5;
            int a[]=new int[30];
            for(int i=0;i<str.length();i++){
             int j=Integer.parseInt(Character.toString(str.charAt(i)));
             a[i]=j;
            }
           for(int i=0;i<str.length();i++){
               if(a[i]==n)
                  System.out.println(a[i]);
               else if(a[i]<n){
                  int j=i,temp=i;
                  int k=a[i];
                  StringBuffer sb=new StringBuffer();
                  
                  while(k<=n){
                   if(k==n){
                   sb.append(String.valueOf(a[j]));
                   System.out.println(sb.toString());
                   }
                    if(j==str.length()-1)
                     break;
                    k=k+a[++j];
                    sb.append(String.valueOf(a[temp++]));
                  }
               }
               else
                  continue;
           }
        }
    }
      

  11.   

    另外13楼的,int temp=Integer.parseInt(String.valueOf(s.substring(i, i+1)));
    subString本来返回的就是字符串,就不用String.valueOf了吧?下面也是一样的。我把程序想复杂了 楼主还是参考12楼和13楼的吧
      

  12.   

    public class Test 

          public static void main(String[] args) 
          { 
              String s="122345678";
              int n=5;
              for(int i=0;i<s.length();i++){
                  int temp=Integer.parseInt(String.valueOf(s.substring(i, i+1)));
                  if(temp>n){
                      continue;
                  }
                  if(temp==n){
                      System.out.println(n);
                  }
                  for(int j=i+1;j<s.length();j++){
                      temp+=Integer.parseInt(String.valueOf(s.substring(j, j+1)));
                      if(temp>n){
                          break;
                      }
                      if(temp==n){
                          for(int k=i;k<=j;k++){
                              System.out.print(s.substring(k, k+1));
                          }
                          System.out.println();
                      }
                      
                  }
                  
              }
          } 
    }LZ看看这个