当输入的形式如下(以下)时,如何使用Scanner将String作为输入?

时间:2014-06-18 21:43:51

标签: java string

输入:

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));
                }
            }
        }
    }
}

2 个答案:

答案 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)

一目了然,看起来你的范围已经关闭了。

中的变量p
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中变量范围的更多信息:

variable scope