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();