略过一个字,打印下一个

时间:2016-03-04 02:20:17

标签: java arrays string

我需要从命令行中取出单词,将它们保存到数组中,然后打印出如下的单词:

input: asdf jkl qwerty dfs

output: - jkl qwerty dfs
       asdf - qwerty dfs
      asdf jkl - qwerty dfs
      asdf jkl qwerty -

另外,如果用户只提供2个单词,我应该会得到相同的结果。当所给出的论据数量每次都不同时,我不明白我会怎么做。 以下是我的尝试:

  public static void main(String[] args)
{
String input1 = args[0];
String input2 = args[1];
String input3 = args[2];
String input4 = args[3];

String[] input = new String[4];
}

public static void printExceptOne(String[] exception, int x)
{
System.out.print("-");
System.out.print(" "+exception[1]);
System.out.print(" "+exception[2]);
System.out.println(" "+exception[3]);
 }
 }  

3 个答案:

答案 0 :(得分:7)

public class Solution {

    public static void main(String[] args) {
        printExceptOne(args);
    }

    private static void printExceptOne(String[] args) {
        for (int i = 0; i < args.length; i++) {
            for (int j = 0; j < args.length; j++) {
                String output = j == i ? "-" : args[j];
                // adjust spaces however you like
                System.out.print(" " + output);
            }
            System.out.println();
        }
    }
}

实际测试

输入

asdf jkl qwerty dfs

输出

 - jkl qwerty dfs
 asdf - qwerty dfs
 asdf jkl - dfs
 asdf jkl qwerty -

注意:我假设您预期输出的第3行不正确。 你有它

[asdf jkl - qwerty dfs]

答案 1 :(得分:1)

有用的工具:

  • for(initializer, condition, what to do after each iteration) what to do
    提供循环
  • if (condition) what to do
    仅在what to docondition时才true

可能的实施:

class Sample
{
    public static void main(String[] args)
    {
        // iterate for each rows
        for (int i = 0; i < args.length; i++)
        {
            // iterate for wach words
            for (int j = 0; j < args.length; j++)
            {
                // print space for second words or later
                if (j > 0)
                {
                    System.out.print(" ");
                }
                // determine what should be printed
                String toPrint = args[j];
                if (i == j)
                {
                    toPrint = "-";
                }
                // print it
                System.out.print(toPrint);
            }
            // proceed to next row
            System.out.println();
        }
    }
}

答案 2 :(得分:-1)

您应该使用嵌套循环。循环将遍历值i= 0通过数组中的元素数量,嵌套循环将打印出未在i索引的所有值。

public static void printExcept(String[] exception) {
    for(int i = 0; i < exception.length; i++) {
        for(int j = 0; j < exception.length; j++) {
            if( j != i ) {
                // Print elements that aren't at exception[i]
                System.out.print(exception[j]);
            } else {
                // Don't print elements at exception[i]
                System.out.println(" - ");
            }
        }
        // Move to next line
        System.out.println();
    }
}

您不需要第二个参数(至少从我在您的问题陈述中理解的内容)。

在此处阅读有关循环的更多信息: http://www.tutorialspoint.com/java/java_loop_control.htm