输入:
abc
def
feg
cba
这就是我在做的,当然是错的!
import java.util.Scanner;
public class P {
public static void main(String []args){
Scanner x = new Scanner(System.in);
int t = x.nextInt();
for (int j=0; j<t; j++) {
String p[j] = x.nextLine();
}
for (j=0; j<p.length(); j++) {
for (k=0; k<p.length(); k++) {
if (p[j] = reverse(p[k])) {
int q = p[k].length();
System.out.println(""+q+((q/2)+1));
}
}
}
}
}
答案 0 :(得分:0)
您编写的错误消息是由于此代码:
for (int j=0; j<t; j++) {
String p[j] = x.nextLine();
}
如果你想创建一个String数组,你就是这样做的:
String[] p = new String[t];
还需要在for-loop之外声明它。我建议这样的事情:
public static void main(String []args){
Scanner x = new Scanner(System.in);
int t = x.nextInt();
String[] p = new String[t];
for (int j = 0; j < t; j++) {
p[j] = x.nextLine();
}
for (j=0; j<p.length(); j++) {
...
}
}
您发布的新代码:
Scanner x = new Scanner(System.in);
int t = x.nextInt();
String p[] = new String[n];
for (int j = 0; j < t; j++) {
p[j] = x.nextLine();
}
for (j = 0; j < p.length(); j++) {
for(k = 1; k < p.length(); k++) {
if (p[j] = reverse(p[k])) {
int q = p[k].length();
System.out.println(""+q+((q/2)+1));
}
通过我评论的所有更正,您的代码应如下所示:
Scanner x = new Scanner(System.in);
int t = x.nextInt();
String[] p = new String[t];
for (int j = 0; j < t; j++) {
p[j] = x.nextLine();
}
for (int j = 0; j < p.length(); j++) {
for (int k = 1; k < p.length(); k++) {
if (p[j] = reverse(p[k])) {
int q = p[k].length();
System.out.println("" + q + ((q / 2) + 1));
}
}
}
答案 1 :(得分:0)
for (int j=0; j<t; j++) {
String p[j] = x.nextLine();
}
声明然后立即丢弃。你可能想要更像
的东西 String[] p = new String[t];
for (int j=0; j<t; j++) {
p[j] = x.nextLine();
}
类似于下面循环中的q
int q = 0;
for (int j=0; j<p.length; j++) {
for (int k=0; k<p.length; k++) {
if (p[j] = reverse(p[k])) {
q = p[k].length();
System.out.println(""+q+((q/2)+1));
}
}
}
希望这会有所帮助。
有关Java中变量范围的更多信息: