Java 如何解开一根绳子?
似乎无法让这个工作。试图让它像镜子一样向后读取,而不使用缓冲区类Java 如何解开一根绳子?,java,string,reverse,Java,String,Reverse,似乎无法让这个工作。试图让它像镜子一样向后读取,而不使用缓冲区类 public static void main(String[] args) { Scanner keyboard = new Scanner(System. in); System.out.println("Enter a phrase:"); String phrase = keyboard.nextLine(); String Rphrase; int n = phrase.l
public static void main(String[] args) {
Scanner keyboard = new Scanner(System. in);
System.out.println("Enter a phrase:");
String phrase = keyboard.nextLine();
String Rphrase;
int n = phrase.length();
int r = 0;
do{
n--; r++;
Rphrase[r] = phrase[n];
}while(n >= 0);
System.out.println(Rphrase);
尝试:
这就是你需要的
String reverse = "";
String toReverse = "hello";
for(int i = 0; i<toReverse.length();i++){
reverse += toReverse.substring(i,i+1);
}
System.out.println(reverse);
String reverse=”“;
字符串toReverse=“hello”;
对于(inti=0;i一些提示,而不是完整的解决方案
当n=0
时,您的循环将再次运行一次,这将导致尝试访问索引-1
。因此,您可以根据自己的条件尝试n>0
如果字符串为空,会发生什么情况?在进入循环之前,它还会尝试访问索引-1
。也许您应该将条件放在开头
字符串
不支持[]
运算符-请尝试:
Rphrase += phrase.charAt(n);
在这种情况下,您也可以去掉r
我提供了4种方法来反转字符串的输出
备选案文1:
只需向后迭代字符串
for (int i=phrase.length()-1; i>-1; i--) {
System.out.print(foo.charAt(i));
}
备选案文2:
如果要将其放入另一个缓冲区,可以执行以下操作:
char[] buffer = new char[phrase.length()];
index = 0;
for (int i=phrase.length()-1; i>-1; i--) {
buffer[index++] = foo.charAt(i);
}
备选案文3:
你说你不想使用buffer类(我想你指的是StringBuffer,所以我假设你也不想使用StringBuilder),下面是你如何严格使用字符串(这是相当低效的,因为每次迭代都会构造一个新字符串):
备选案文4:
不过,一种更有效的方法是使用StringBuilder:
StringBuilder sb = new StringBuilder(foo.length());
for (int i=foo.length()-1; i>-1; i--) {
sb.append(foo.charAt(i));
}
String reverse = sb.toString();
或
有关使用StringBuilder进行非常简单的字符串反转的信息,请参阅此链接:
您必须进行减量,以便它可以前后读取其值
对于(inti=name.length()-1,j=0;i>=0;i--,j++){
newName[j]=name.charAt(i);在此处输入代码
}
}只需使用StringBuilder.reverse
str = new StringBuilder(str).reverse().toString();
您发布的代码中存在多个错误。我强烈建议您删除所有内容并重新开始。这只需通过1.)读取字符串
2.)将字符串
转换为字符
的数组
3。)使用for循环
迭代字符[]
backwards.String rPhrase=新的StringBuilder(短语).reverse().toString()@那你怎么会认为他在使用一个库呢?它似乎是一个类名!这里的Rphrase是一个变量:D camelcasting的重要性:)@Sujay啊,我的坏Rphrase显示不正确,因为他把它大写了。但这种做法仍然很糟糕=让OP找出问题,然后自己解决,不是更好吗?而不是仅仅为他写?如果你要为他写,不要保留rprase
变量名,总是以小写字母开始变量。@t我想不会吧。。但是太晚了,sry:(
StringBuilder sb = new StringBuilder(foo.length());
for (int i=foo.length()-1; i>-1; i--) {
sb.append(foo.charAt(i));
}
String reverse = sb.toString();
System.out.println(newName);
str = new StringBuilder(str).reverse().toString();