运行时间Error_String索引越界Exception_Printing字符串奇偶索引
Run Time Error_String index out of bound Exception_Printing string odd and even indexes
代码:
导入java.io.;
导入 java.util.;
public class 解决方案{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] sa = new String[n];
for(int i=0;i<n;i++){
sa[i] = sc.nextLine();
}
String odd="";
String even="";
for(int i=0;i<n;i++)
{
for(int j=0;j<sa[i].length();j++)
{
if(j%2!=0){
odd = odd+sa[j].charAt(j);
}
else {
even = even+sa[j].charAt(j);
}
}
System.out.println(odd+" "+even);
}
}
}
问题:在 运行 执行代码时获取 运行 时间异常。 --> 字符串索引越界异常
您可以试试下面的代码。这是因为在sc.nextLine()
之前调用了nextInt()
这样的方法
问题是 nextInt() 不消耗 '\n',因此下一次调用 nextLine() 会消耗它,然后等待读取下一个元素的输入。
调用nextLine()
前需要先消费'\n'或者直接调用nextLine()
也用于数组大小。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter Array size");
int n = Integer.parseInt(sc.nextLine());
String[] sa = new String[n];
for (int i = 0; i < n; i++) {
System.out.println("Enter Element "+i);
String val = sc.nextLine();
sa[i]=val;
}
String odd = "";
String even = "";
for (int i = 0; i < n; i++) {
for (int j = 0; j < sa[i].length(); j++) {
if (j % 2 != 0) {
odd = odd + sa[j].charAt(j);
} else {
even = even + sa[j].charAt(j);
}
}
System.out.println(odd + " " + even);
}
}
代码:
导入java.io.; 导入 java.util.;
public class 解决方案{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] sa = new String[n];
for(int i=0;i<n;i++){
sa[i] = sc.nextLine();
}
String odd="";
String even="";
for(int i=0;i<n;i++)
{
for(int j=0;j<sa[i].length();j++)
{
if(j%2!=0){
odd = odd+sa[j].charAt(j);
}
else {
even = even+sa[j].charAt(j);
}
}
System.out.println(odd+" "+even);
}
}
}
问题:在 运行 执行代码时获取 运行 时间异常。 --> 字符串索引越界异常
您可以试试下面的代码。这是因为在sc.nextLine()
nextInt()
这样的方法
问题是 nextInt() 不消耗 '\n',因此下一次调用 nextLine() 会消耗它,然后等待读取下一个元素的输入。
调用nextLine()
前需要先消费'\n'或者直接调用nextLine()
也用于数组大小。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter Array size");
int n = Integer.parseInt(sc.nextLine());
String[] sa = new String[n];
for (int i = 0; i < n; i++) {
System.out.println("Enter Element "+i);
String val = sc.nextLine();
sa[i]=val;
}
String odd = "";
String even = "";
for (int i = 0; i < n; i++) {
for (int j = 0; j < sa[i].length(); j++) {
if (j % 2 != 0) {
odd = odd + sa[j].charAt(j);
} else {
even = even + sa[j].charAt(j);
}
}
System.out.println(odd + " " + even);
}
}