| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1145 人关注过本帖, 1 人收藏
标题:求用链表实现回文数的Java程序
只看楼主 加入收藏
北恩
Rank: 1
来 自:西安
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-7-8
收藏(1)
 问题点数:0 回复次数:7 
求用链表实现回文数的Java程序
RT
判断从键盘输入的一个数字是否是回文数,希望用Java的链表实现。
PS.回文数:正着和倒着读是一样的,比如121,2332等等。
多谢高手帮忙~~
搜索更多相关主题的帖子: Java 
2011-04-20 11:02
北恩
Rank: 1
来 自:西安
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-7-8
收藏
得分:0 
在学校的时候学过数据结构,遇见过类似的问题,可是不会用Java实现。
首先不知道怎么从键盘接受数据。。。
2011-04-20 11:03
machine_of_a
Rank: 2
等 级:论坛游民
帖 子:8
专家分:36
注 册:2011-4-19
收藏
得分:0 
为何用链表?用String就好了.
程序代码:
import java.util.Scanner;
import /**

 * Describe class test here.

 *

 *

 * Created: Wed Apr 20 14:29:04 2011

 *

 * @author <a href="mailto:enthusiasmer@* @version 1.0

 */
public class test {

  /**
   * Creates a new <code>test</code> instance.
   *
   */
  public test() {

  }

  /**
   * Describe <code>main</code> method here.
   *
   * @param args a <code>String</code> value
   */
  public static final void main(final String[] args) {
    String str = "";
    test me = new test();
    boolean flag;
    InputStream is = System.in;
    Scanner scan = new Scanner(is);   

    while (str.equals("quit")!=true)
    {
      System.out.println("please input a number:");
      str = scan.next();           

      flag = me.IsPalindrome(str);   

      System.out.println(flag);
    }

    System.out.println("bye");
  }


 

  /**
   * Describe <code>IsPalindrome</code> method here.
   *
   * @param str a <code>String</code> value
   * @return a <code>boolean</code> value
   */
  private boolean IsPalindrome(String str) {
    try {
      Integer.parseInt(str);
    } catch(NumberFormatException e) {
      return false;
    }
   

    int half;
    String tmpStr1, tmpStr2;

    half = str.length()/2;
    for (int i=0; i<half; i++) {
      tmpStr1 = str.substring(i, i+1);
      tmpStr2 = str.substring(str.length()-i-1, str.length()-i);
      if (tmpStr1.equals(tmpStr2)==false)
      {
        return false;
      }
    }
    return true;
  }
}

2011-04-20 16:56
洛云
Rank: 5Rank: 5
等 级:职业侠客
帖 子:204
专家分:356
注 册:2010-2-3
收藏
得分:0 
回复 3楼 machine_of_a
何不试试StringBuffer的reserve()方法?

QQ群:C语言初级群:31066229
   JAVA2自学交流群(筹备中):31066388
UC群:C语言学习:10051714
2011-04-20 18:24
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
程序代码:
public class main {
    public static void main(String args[]) throws IOException
    {
        int b;
        byte buffer[] = new byte[100];//字节流
       
        System.out.println("输入一行文本: ");
        b = System.in.read(buffer);
        b = b-2;
       
        LinkedList list = new LinkedList();
   
        while (list.size() != b)
        {
            list.add(buffer[list.size()]);
        }
   
        while (list.size() > 1)
        {
            Object a = list.getFirst();
            Object c = list.getLast();
            if (a.equals(c))
            {
                list.removeFirst();
                list.removeLast();
            }
            else
            {
                System.out.println("不是回文");
                System.exit(0);
            }
        }
       
        System.out.println("是回文");
    }
}
2011-04-22 08:52
诸葛修勤
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:549
专家分:1955
注 册:2010-10-28
收藏
得分:0 
        b = System.in.read(buffer);
        b = b-2;
每当输入一串字符  b的值的大小都是比输入的可见字符数 多两个 所以就在这里减掉2

是不是回车也被记录啦?  
2011-04-22 08:56
ahphs
Rank: 2
来 自:江苏无锡
等 级:论坛游民
帖 子:6
专家分:20
注 册:2010-2-5
收藏
得分:0 
程序代码:
package test;
import java.awt.*;
import java.applet.*;
public class Main extends Applet{
    Label lab;
    TextField input;
    int a1,a2=0,k=0,a;
    public void init(){

        lab=new Label("请输入数据");
        input=new TextField(16);
        add(lab);
        add(input);

    }
    public boolean action(Event e,Object o){
        if(e.target==input)
        a1=Integer.parseInt(input.getText());
        k=a1;
        while(k<0||k>0)
        {
                    a=k%10;
            a2=10*a2+a;
            k=k/10;
        }
        if(a1==a2)
            showStatus("输入的数为"+a1+",该数为回文数");
        else
            showStatus("输入的数为"+a1+",该数不是回文数");
                input.setText("");
                a2=0;

    return true;
    }
}
以前做的。。用到小程序查看器。
2011-04-22 10:48
ahphs
Rank: 2
来 自:江苏无锡
等 级:论坛游民
帖 子:6
专家分:20
注 册:2010-2-5
收藏
得分:0 
还可以用char数组实现
程序代码:
package test;
import java.util.*;

//这个方法也可用于判断回文字符串
public class Main{
    public static String st;
    public static void type(){
        Scanner sc=new Scanner(System.in);
        st=sc.nextLine();
    }
    public static void main(String[] args){
        int len;
        System.out.println("输入一个数字");
        Main.type();
        len=st.length();
        char a[]=new char[len];
        a=st.toCharArray();
        for(int t=0;t<(len+1)/2;t++){
            if(a[t]!=a[len-t-1]){
                System.out.println("不是回文数!");
                break;   
            }
            if(t<(len-1)/2)  //用于判断是否检查完所有对应组
                continue;
            System.out.println("是回文数!");
        }
    }
}
不过怎么用链表我真不知道,,我java就没学过链表

[ 本帖最后由 ahphs 于 2011-4-22 10:56 编辑 ]
2011-04-22 10:51
快速回复:求用链表实现回文数的Java程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038226 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved