java - Java中的参数传递问题

标签 java string debugging

我是java新手,一直在编写一个程序来检查给定的字符串是否是周期性的。如果一个字符串不能表示为连接一定次数的较小字符串,则该字符串不是周期性的。示例“1010”是周期性的,但“1011”不是。这是我的代码。它可以编译,但问题是它告诉每个字符串都不是周期性的。我猜问题出在 isPeriodic 函数中的 for 循环。请帮我纠正一下。

import java.io.*;
import java.util.*;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) throws java.lang.Exception {
        java.io.BufferedReader R = new java.io.BufferedReader
        (new java.io.InputStreamReader(System.in));
        //String st = R.readLine();
        String st = "10101010";
        if (isPeriodic(st) == false) {
            System.out.println(" Non Periodic");
        }
            else  {
                System.out.println("Periodic");
            }
    }

    private static boolean isPeriodic(String s)
    {
        String temp = s;
        int i;
        boolean pflag = false;
        for ( i = 1; i <= (s.length()/2); i++) {
            s = rotateNltr(s,i);
            if (s == temp) {
                pflag = true;
                break;
            }
        }
        return pflag;
    }



    private static String rotateNltr(String s, int n) {
        if( n > s.length()) {
            return null;
        }
        for ( int i = 0; i < n; i++) {
            s = leftRotatebyOne(s);
        }
        //System.out.println(s);
        return s;
    }
    private static String leftRotatebyOne(String s) {
        char[] temp = s.toCharArray();
        char t = temp[0];
        for ( int i = 0 ; i < s.length()-1 ;i++ ) {
            temp[i] = temp [i+1];
        }
        temp[s.length()-1] = t;
        String r = new String(temp);
        //System.out.println(r);
        return r;
    }

}

最佳答案

您不能使用 == 来比较对象(包括字符串)。您必须使用equals方法。

关于java - Java中的参数传递问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8109811/

相关文章:

c++ - 接收 “string subscript out of range”错误

java - 我将如何在 Java 中实现 Go 的无缓冲 channel ?

java - 如果我没有原始的 XPath,如何刷新过时的 Selenium 元素

ruby-on-rails - 什么是好的 ruby​​-debug 替代品?

javascript - 如何替换javascript中某些字符之间的文本

c# - 应用程序设置中的 StringCollection 未存储

c# - 禁用 WPF 异常包装以进行调试

java - 在 Robolectric 上运行第一个测试时出现问题

java - 尽 pipe 类中也存在相同的方法,如何阻止子类对象从父类调用方法

java - 返回 s 中的大写字母,如果没有找到则返回 -1