public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("asdasdasdasd",25,28); }这段代码为什么索引越界
时间: 2024-04-26 10:21:21 浏览: 19
这段代码会出现索引越界异常是因为在将字符串 "asdasdasdasd" 中索引为 25 到 27 的子字符串添加到 StringBuilder 对象 sb 中时,索引 28 已经超出了字符串的长度,因此会抛出 StringIndexOutOfBoundsException 异常。正确的索引应该是从 0 开始的,因此可以将代码修改为:`sb.append("asdasdasdasd", 0, 3);`这样就不会出现索引越界异常了。
相关问题
public class StringBuilder { public static void main(String[] args) { StringBuilder sb=new StringBuilder(); sb.append("hello") } }其中append无法调用
根据你提供的代码,问题出在你的代码中定义了一个名为`StringBuilder`的类,这与Java标准库中的`java.lang.StringBuilder`类重名了,导致编译器无法识别你自定义的`StringBuilder`类中的`append`方法。
解决这个问题的方法是避免与Java标准库中的类重名。你可以将你自定义的类命名为其他名称,例如`MyStringBuilder`,这样就不会与标准库中的类产生冲突。
修改后的代码如下:
```java
public class MyStringBuilder {
public static void main(String[] args) {
MyStringBuilder sb = new MyStringBuilder();
sb.append("hello");
}
public void append(String str) {
// 实现你自己的append方法逻辑
// ...
}
}
```
请确保在自定义类中实现了`append`方法的逻辑,这里只是给出了一个示例框架。这样你就可以在`MyStringBuilder`类的实例上调用`append`方法了。
public static void main(String[] args) { Scanner sc = new Scanner(System.in); String [] ops = sc.nextLine().split(" "); StringBuilder sb = new StringBuilder(); for (int i = 0; i < ops.length; i++) { ops[i]=sc.nextLine(); if (ops[i]=="[0-9]"){ sb.append(ops[i]); }else if (ops[i]=="+"){ sb.append((ops[i-1]+ops[i-2])); }else if (ops[i]=="C"){ sb.deleteCharAt(i-1); }else if (ops[i]=="D"){ sb.append((ops[i-1]+ops[i-1])); }else { System.out.println("-1"); } System.out.println(sb.toString()); } };检查上面的代码,标出问题,并且优化下代码输出
在这个程序中,有以下两个问题:
1. 字符串比较应该使用equals方法,而不是==运算符。
2. 在处理加法、撤销和双倍运算时,应该先检查是否存在足够的操作数。
下面是修复了这些问题的代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] ops = sc.nextLine().split(" ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ops.length; i++) {
if (ops[i].matches("[0-9]+")) {
sb.append(ops[i]);
} else if (ops[i].equals("+")) {
if (sb.length() < 2) {
System.out.println("-1");
return;
}
int a = Integer.parseInt(sb.substring(sb.length() - 2, sb.length() - 1));
int b = Integer.parseInt(sb.substring(sb.length() - 1));
sb.append(a + b);
} else if (ops[i].equals("C")) {
if (sb.length() < 1) {
System.out.println("-1");
return;
}
sb.deleteCharAt(sb.length() - 1);
} else if (ops[i].equals("D")) {
if (sb.length() < 1) {
System.out.println("-1");
return;
}
int a = Integer.parseInt(sb.substring(sb.length() - 1));
sb.append(a * 2);
} else {
System.out.println("-1");
return;
}
System.out.println(sb.toString());
}
}
}
```
优化输出:
在每次处理完操作后,输出当前的得分情况即可,不需要每次都输出所有的操作序列。修改后的代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] ops = sc.nextLine().split(" ");
StringBuilder sb = new StringBuilder();
int sum = 0;
for (int i = 0; i < ops.length; i++) {
if (ops[i].matches("[0-9]+")) {
sb.append(ops[i]);
sum += Integer.parseInt(ops[i]);
} else if (ops[i].equals("+")) {
if (sb.length() < 2) {
System.out.println("-1");
return;
}
int a = Integer.parseInt(sb.substring(sb.length() - 2, sb.length() - 1));
int b = Integer.parseInt(sb.substring(sb.length() - 1));
sb.append(a + b);
sum += a + b;
} else if (ops[i].equals("C")) {
if (sb.length() < 1) {
System.out.println("-1");
return;
}
sum -= Integer.parseInt(sb.substring(sb.length() - 1));
sb.deleteCharAt(sb.length() - 1);
} else if (ops[i].equals("D")) {
if (sb.length() < 1) {
System.out.println("-1");
return;
}
int a = Integer.parseInt(sb.substring(sb.length() - 1));
sb.append(a * 2);
sum += a * 2;
} else {
System.out.println("-1");
return;
}
System.out.println(sum);
}
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)