我想学习Java。我需要创建一个名为reverse的方法,它获取一个字符串并返回一个字符串(但顺序相反)。这是我试过的。你能修复代码并解释我做错了什么吗?还请给我一些关于Java良好开端的建议。谢谢!
var loadedProduct = dbContext.Product.Find(yourProductId);
IPromotionalOffer pOffer = Factory.Instance.Create<IPromotionalOffer>();
pOffer.Name = "Holi";
pOffer.Products.Add(loadedProduct);
pOffer.Add();
答案 0 :(得分:3)
您可以使用它来反转字符串,您不需要使用自己的方法
new StringBuilder(word).reverse().toString()
如果要使用解决方案,必须将int j = a.length()更改为int j = a.length()-1;
答案 1 :(得分:2)
固定代码是
public class Test {
public static String reverse(String a) {
int j = a.length();
char[] newWord = new char[j];
for (int i = 0; i < a.length(); i++) {
newWord[--j] = a.charAt(i);
}
return new String(newWord);
}
public static void main(String a[]) {
String word = "abcdefgh";
System.out.println(reverse(word));
}
}
与其他人提到的一样,数组索引从0开始。因此,如果数组的大小为5,例如它有索引0,1,2,3,4。它没有索引5.
对于长度为5的字符串示例,我所做的代码更改newWord[--j] = a.charAt(i);
将按顺序分配给索引4,3,2,1,0。
关于在Java中取得良好开端,我认为你可以试试https://softwareengineering.stackexchange.com/。这个网站不适合这种事情。
答案 2 :(得分:0)
这是新Java开发人员的常见难题。
您缺少的是数组中的最后一个条目位于a.length-1
位置。同样适用于Strings
这里有一个改进的版本来演示。
public static String reverse(String a) {
char[] newWord = new char[a.length()];
for (int i = 0, j = a.length() - 1; i < a.length(); i++, j--) {
newWord[j] = a.charAt(i);
}
return new String(newWord);
}
答案 3 :(得分:0)
您已经使用自己的方法走在正确的轨道上了。我要对你说的一件事是,你不需要使用一个字符数组,然后使用return new String(newWord);
之类的东西。在我看来,对于初学Java来说,这太复杂了。
相反,您可以创建一个空字符串,并在循环浏览要反转的字符串中的所有字符时,继续将字符附加到字符串上。
所以你的for
循环,因为你正在翻转单词,应该从被反转的单词的末尾开始(在这种情况下为a
)并向后工作到索引位置0(即。这个词的开头被颠倒了)。
试试这个,看看这对你有意义:
public static String reverse(String a) {
String reversedWord = "";
for (int index = a.length() - 1; index >= 0; index --) {
reversedWord += a.charAt(index);
}
return reversedWord;
}
然后,从a
结束开始,一次向后处理一个字符(因此使用index --
),直到我们到达index
已经消失的点为止超出索引位置0处的字符(index >= 0
的中间条件)。
在每个索引位置,我们只是从a
字符串中取出字符并将其附加到reversedWord
字符串。
希望这有帮助!如果你被困在这个问题上,请随意提出任何其他问题。
答案 4 :(得分:0)
在for
循环中,正文必须如此
newWord[--j] = a.charAt(i);
。这是因为如果数组的长度为8,则其索引为0-7。所以我们首先递减j
然后将它用作数组指针。
答案 5 :(得分:0)
public class Test {
public static String reverse(String a) {
int size= a.length();//size of string
char[] newWord = new char[size];//intialize
for (int i = size-1,j=0; i >=0 ; i--,j++) {//loop start from 7 to 0
newWord[j] = a.charAt(i);// and reverse string goes from 0 to 7
}
return new String(newWord);
}
public static void main(String a[]) {
String word = "abcdefgh";
System.out.println(reverse(word));
}
}
答案 6 :(得分:0)
static void reverse {
String word = "Hello World";
StringBuilder str = new StringBuilder(word);
str.reverse();
System.out.println(str);
}
或者您可以
new StringBuilder(word).reverse().toString()
答案 7 :(得分:0)
public static void main(String[] args) {
String input = "hello world";
String output = new String();
for (int i = input.length() - 1; i >= 0; i--) {
output = output + input.charAt(i);
}
System.out.println(output);
}
答案 8 :(得分:0)
}