呵呵,是作业吧,怎么不找同学COPY一下省事啊,
我们也做了这个,你看看,我没有检查的。/* 习题二 第11小题找出0到30找出自然数k,使得k,k*k,k*k*k都含有数字d,如 d=1,k=11,k*k=121,k*k*k=1331.
*/
public class Ex0211
{
public static void main(String args[])
{
int d;
for(int i=1;i<30;i++)
{
d=i%10;
if(((int)(i*i)%10==d)||((i*i)/10==d)||((i*i>=100)&&(i*i/100)==d))
{
if(((i*i*i)%10==d)||((i*i*i/10)%10==d)||((i*i*i>=100)&&(i*i*i/100)==d)||((i*i*i>=1000)&&(i*i*i/1000)==d)||((i*i*i>=10000)&&(i*i*i/10000)==d))
System.out.println("d="+d+",k="+i+",k*k="+i*i+",k*k*k="+i*i*i);
}

if((i>=10)&&((d=i/10)!=(i%10)))
{
if(((i*i)%10==d)||((i*i)/10==d)||((i*i>=100)&&(i*i/100)==d))
{
if(((i*i*i)%10==d)||((i*i*i/10)%10==d)||((i*i*i>=100)&&(i*i*i/100)==d)||((i*i*i>=1000)&&(i*i*i/1000)==d)||((i*i*i>=10000)&&(i*i*i/10000)==d))
System.out.println("d="+d+",k="+i+",k*k="+i*i+",k*k*k="+i*i*i);
}
}
}
}
}

解决方案 »

  1.   

    import java.util.*;
    public class NumberTest
    {
      public String retsult(int i,int j)
      {
        String s=null;
        if(i<0&&i>30)
        {
          System.out.println("输入数字不正确");
          return null;
        }
        int tempI = 1;
        for(int k=0;k<j;j++)
        {
          tempI = tempI*i;
        }
        s = tempI+"";
        return s;
      }
      public boolean judge(int i,int d)
      {
        String temps1 = retsult(i,2);
        String temps2 = retsult(i,3);
        String temps3 = i+"";
        if(!judgePosition(temps1,d+""))
          return false;
        if(!judgePosition(temps2,d+""))
          return false;
        if(!judgePosition(temps3,d+""))
          return false;
        return true;
      }
      public boolean judgePosition(String s,String s2)
      {
        for(int i=0;i<s.length();i++)
        {
          if(s.charAt(i)==s2.toCharArray()[0])
            return true;
        }
        return false;
      }
      public static void main(String args[])
      {
        NumberTest nt = new NumberTest();
        Vector vt =new Vector();
        for(int i=0;i<31;i++)
        {
          if(nt.judge(i,1))
            vt.add(i+"");
        }
        for(int j = 0;j<vt.size();j++)
        {
          System.out.println(vt.get(j));
        }
      }}
      

  2.   

    刚才程序有错误
    import java.util.*;public class NumberTest
    {
      public String retsult(int i, int j)
      {
        String s = null;
        if (i < 0 && i > 30)
        {
          System.out.println("输入数字不正确");
          return null;
        }
        int tempI = 1;
        for (int k = 0; k < j; k++)
        {
          tempI = tempI * i;
        }
        s = tempI + "";
        return s;
      }  public boolean judge(int i, int d)
      {
        String temps1 = retsult(i, 2);
        String temps2 = retsult(i, 3);
        String temps3 = i + "";
        if (!judgePosition(temps1, d + ""))
        {
          return false;
        }
        if (!judgePosition(temps2, d + ""))
        {
          return false;
        }
        if (!judgePosition(temps3, d + ""))
        {
          return false;
        }
        return true;
      }  public boolean judgePosition(String s, String s2)
      {
        if (s.indexOf(s2) >= 0)
        {
          return true;
        }
        return false;
      }  public static void main(String args[])
      {
        NumberTest nt = new NumberTest();
        for (int i = 0; i < 31; i++)
        {
          if (nt.judge(i, 1))
          {
           System.out.println(i);
          }
        }
      }}