下面的程序总是跳过第一次迭代。它在第一次迭代中没有任何输入>这有什么问题。我是java新手所以mabe这个问题可能非常蹩脚。 :(以下是我的计划
import java.util.*;
public class Solution2 {
public static void main (String [] args){
String str;
int T,length,a;
Scanner in = new Scanner(System.in);
T = in.nextInt(); // no of test cases
int [] oprs = new int [T];
// taking a string
for(int i = 1;i <= T;i++){
str = in.nextLine();
int ops = 1;
char [] array;
array = str.toCharArray();
length = array.length;
if (length % 2 == 0 ){
int k = 1;
for(int j = length/2 ; j < length ;j++ ){
if(array[length/2 - k] != array [j]){
a = Math.abs((int)array[length/2 - k] - (int)array[j]);
ops = ops + a;
}
k++;
}
oprs [i - 1] = ops;
}
else{
int k = 1;
for(int j = (length+1)/2;j < length ; j++){
if(array[(length-1)/2 - k ] != array [j]){
a = Math.abs((int)array[(length-1)/2 - k] - (int)array[j]);
ops = ops + a;
}
k++;
}
oprs [i - 1] = ops;
}
}
for(int i = 0;i < T ;i++){
System.out.println(oprs[i]);
}
}
}
这是预期的输入和输出
样本输入
3
ABC
ABCBA
abcd
输出 2 0 4
这就是我得到的 3 ABC ABCD
它让我给第三个输入。 产量 1 3 5
答案 0 :(得分:1)
下面
for(int i = 1;i <= T;i++){
您忽略了索引i = 0
,因为您的起点是i = 1
,因此将错过第一次迭代。
提醒您,在 Java 中,数组索引从0
而不是1
开始。
答案 1 :(得分:1)
您必须捕获in.nextInt()的新行,必须在以下行之前:
str = in.nextLine();
在FOR 之前
for(int i = 1;i <= T;i++){
答案 2 :(得分:0)
我认为这就是你想要的:
import java.util.Scanner;
public class Solution2 {
public Solution2() {
// TODO Auto-generated constructor stub
}
public static void main (String [] args){
String str;
int T,length,a;
Scanner in = new Scanner(System.in);
T = in.nextInt(); // no of test cases
int [] oprs = new int [T];
// taking a string
for(int i=1; i<=T; i++){
//System.out.printf("%d\n",i);
str = in.next();
System.out.println(str);
int ops = 1;
char [] array;
array = str.toCharArray();
length = array.length;
if (length % 2 == 0 ){
int k = 1;
for(int j = length/2 ; j < length ;j++ ){
if(array[length/2 - k] != array [j]){
System.out.printf("%c %c\n",array[length/2 - k] ,array [j]);
a = Math.abs((int)array[length/2 - k] - (int)array[j]);
ops = ops + a;
}
k++;
}
oprs[i - 1] = ops;
}
else{
int k = 1;
for(int j = (length+1)/2;j < length ; j++){
if(array[(length-1)/2 - k ] != array [j]){
a = Math.abs((int)array[(length-1)/2 - k] - (int)array[j]);
ops = ops + a;
}
}
oprs[i - 1] = ops;
}
}
for(int i = 0;i < T ;i++){
System.out.println(oprs[i]);
}
}
}
尝试输入:3 abc abcba abcd
这就是结果:
abc
abcba
abcd
b c
a d
3
2
5