package 小组作业; import java.util.Scanner; public class day2 { private static StringBuffer modify(StringBuffer s) { StringBuffer str = new StringBuffer("We are happy."); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ') { str.replace(i, i+1, "%20"); } } return s; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuffer str = new StringBuffer(sc.nextLine()); System.out.println(modify(str)); } }不出结果
时间: 2024-02-14 07:10:12 浏览: 185
这段代码没有正确调用 `modify()` 方法。在 `main()` 方法中,你应该传入读取到的字符串 `str`,而不是固定字符串 `We are happy.`。此外,在 `modify()` 方法中,你也没有使用传入的参数 `s`,而是使用了固定字符串 `We are happy.`,这也是不正确的。
修改 `modify()` 方法中的代码,使用传入的字符串 `s`:
```
private static StringBuffer modify(StringBuffer s) {
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' ') {
s.replace(i, i+1, "%20");
}
}
return s;
}
```
修改 `main()` 方法中的代码,传入读取到的字符串 `str`:
```
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuffer str = new StringBuffer(sc.nextLine());
System.out.println(modify(str));
}
```
这样就可以正确读取用户输入的字符串,并将其中的空格替换成 `%20`。
相关问题
import java.util.*; import java.util.Scanner; class Solution { /** * 反转字符串 * @param str string字符串 * @return string字符串 */ public static void main(String arg[]) { public String solve (String str) { Scanner Scanner = new Scanner(System.in); String str1 = Scanner.nextLine(); StringBuffer StringBuffer = new StringBuffer(str); StringBuffer.reverse(); String str2 = StringBuffer.toString(); System.out.println(str2); } } }
这段代码有一些问题,需要进行修改。其中,主要问题是在 `solve` 方法中定义了一个 `Scanner` 对象,但是该对象并没有被使用,同时在 `main` 方法中定义了一个 `public` 方法,这也是不合法的。此外,`Scanner.nextLine()` 方法应该传入的是参数 `str`,而不是创建一个新的字符串对象 `str1`。根据你的问题,我猜测你想要的是一个 Java 实现的字符串反转函数,可以尝试以下代码:
```java
class Solution {
/**
* 反转字符串
* @param str string字符串
* @return string字符串
*/
public String solve (String str) {
StringBuffer sb = new StringBuffer(str);
return sb.reverse().toString();
}
}
```
以上代码定义了一个 `Solution` 类,并在其中定义了一个名为 `solve` 的方法,用于反转传入的字符串。在该方法中,我们首先创建一个 `StringBuffer` 对象,并将其初始化为传入的字符串 `str`。然后,我们调用 `reverse` 方法将其反转,并将结果转换为字符串返回。
如果你想要测试该函数,可以在 `main` 方法中调用它,并将结果打印出来,如下所示:
```java
public static void main(String[] args) {
Solution solution = new Solution();
String str = "hello world";
String reversedStr = solution.solve(str);
System.out.println(reversedStr);
}
```
以上代码在 `main` 方法中创建了一个 `Solution` 对象 `solution`,并将字符串 `"hello world"` 传入 `solve` 方法中进行反转。然后,将反转后的结果打印出来。
import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); String str = sc.next() ; StringBuffer sb = new StringBuffer(); String s1 = null; for (int i = str.length() - 1; i >= 0; i--) { char curChar = ; if (curChar >= 'a' && curChar <= 'z') s1 = ; else if (curChar >= 'A' && curChar <= 'Z') s1 = ; else s1 = String.valueOf(curChar); ; } System.out.println( ); } }
这段代码中,你使用了Scanner类和StringBuffer类,并且在控制台输入了一个字符串。接着,你使用了for循环来遍历字符串中的每个字符,判断其是否为小写字母、大写字母或其他字符,并将其转为字符串类型存储在s1中。最后,你将s1添加到StringBuffer对象sb中,并输出sb的值。但是,你没有给出curChar的赋值语句,因此代码无法正常运行。
阅读全文