簡體   English   中英

試圖讓我的弦向左旋轉。 我在這里做錯了什么?

[英]Trying to get my string to rotate left. What am I doing wrong here?

我是 Java 的新手,我正在嘗試讓我的代碼正常工作,但有點卡住了。 我想讓一個字符串向左隨機旋轉一個量,但我一直遇到錯誤。 這是我目前擁有的:

String rotateLeft(String input, int i) {
  if (input == null) {
    return null;
  }
  if (input.length() == 0) {
    return input;
  }
  int r = i % input.length();
  String one = input.substring(input.length() - r);
  String two = input.substring(0, input.length() - r);
  return one + two;
}

如果我能得到一些幫助來修復它,那就太棒了!

編輯:我改變了我的代碼,現在它看起來像這樣:

// String Rotate Left
String rotateLeft(String s, int rotate) {
  // Sanity checks
  char[] rotatedString = new char[s.length()];
  for (int i = 0; i < s.length(); i++) {
    int newPosition = (i + rotate) % s.length();
    assert newPosition >= 0 && newPosition < s.length() : "Bad index " + newPosition;
    rotatedString[newPosition] = s.charAt(i);
  }
  return new String(rotatedString);
}
System.out.println(rotateLeft("CS125", 1));

它不是打印出 S125C,而是打印出 5CS12。 我將如何更改它以打印出我想要的內容?

要在字符串上向左旋轉,一種方法確實是將提供的輸入字符串中的兩個子字符串串聯起來,基本上就像您正在使用的那樣,但是您已經過度復雜了:

String leftRotatedString = input.substring(numberOfCharsToRotate) 
                         + input.substring(0, numberOfCharsToRotate);

我不能為我的生活但是看看你的代碼中有什么是隨機的。 如果您想旋轉隨機數量的字符串字符,那么也許可以使用Random class 及其nextInt()方法,例如:

// The input string:
String input = "MississippiRiver";

// Generate a random 'index' value of the input string:
int rnd = new Random().nextInt(input.length() - 1) + 1;

// Carry out the rotation:
String leftRotation = input.substring(rnd) + input.substring(0, rnd);

// Display the random rotation value (the number of characters to rotate left by): 
System.out.println("Random Number Of Characters To Rotate By: -->  " + rnd);

// Display the rotated result string:
System.out.println("Result: -->  " + leftRotation);

編輯:根據您發布的編輯更新:

你會做一個正確的旋轉,例如:

System.out.println(s.substring(s.length() - 2) 
                 + s.substring(0, s.length() - 2));

output 將是:

5CS12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM