【问题标题】:Java 7: An array as inputJava 7:一个数组作为输入
【发布时间】:2015-02-02 07:44:33
【问题描述】:

好的,所以我应该使用它作为我的代码的开头:

public static int addOdds(int[] input){}

这将返回总和。

我已经用预加载的数组完成了添加赔率部分。 这很简单,但让我心慌的是如何让这个数组作为用户的输入。

我从 java.utils 知道 Scanner,但我不确定如何让它与我的代码一起运行以使其接受一个数组(如果可以的话)。

我考虑过使用:

public string void main(String [] args){}

并用它调用 Scanner,并使用 Integer.parseint(),但我认为它不能解析数组。

然后从扫描仪中调用输入数组以传递给 addOdds 方法。

例如 {2,3,7,8,4,1} 将是代码必须作为输入的内容。

提前谢谢,我有点难过。

如果有帮助,这里有一个示例查询; inputTwo 与问题无关:

public class Proj2Tester {
    public static void main(String[] args){
        int[] inputOne = {4,8,9,12,7};
        int[] inputTwo = {41,38,19,112,705};
        System.out.println("Problem 1 is correct on test input = " +  (16 == Problem1.addOdds(inputOne)));
        System.out.println("Problem 2 is correct on test input = " + (686== Problem2.getRange(inputTwo)));

    }

按照 T.J. 的建议,我尝试了以下方法:

公共课问题1 { 公共静态 void main(String args[]){

    System.out.println("Your array is: "+input);

    }

}

public static int addOdds(int[] input){
    int[] input = new int[args.length]; //Begin T.J.'s segment
    int n = 0;
    for (String arg : args) {
    input[n++] = Integer.parseInt(arg);


    int sum =0; //Initializing sum as 0;

    for(int i =0; i < inputOne.length; i++){
        if(inputOne[i] % 2 !=0){
            ;
            sum = sum + inputOne[i];
            break;
        }
        if(inputOne[i] % 2 == 0){

            i++;
            break;

    }
    }


    return sum; // placeholder for my answer, not zero should be returned
}

【问题讨论】:

  • 您可以阅读scanner.nextInt()并将其添加到列表中。从用户那里读取完所有整数后,请使用 List.toArray()
  • 我认为除了使用 loop 之外没有其他选择......
  • @Runcorn 为什么你认为她不能使用循环?
  • 我是说她需要使用循环,别无他法......而且,我想我错了......

标签: java arrays input


【解决方案1】:

至少有两个选项:

  1. 让用户将数组条目指定为单独的命令行参数,例如:

    java YourClass 2 3 7 8 4 1
    

    ...然后将args中的条目解析成int数组:

    int[] input = new int[args.length];
    int n = 0;
    for (String arg : args) {
        input[n++] = Integer.parseInt(arg);
    }
    
  2. 让用户使用逗号将数组指定为单个命令行参数:

    java YourClass "2,3,7,8,4,1"
    

    ...然后用逗号分割args[0],并将生成的字符串数组中的条目解析为int数组。

#1 对我来说似乎更简单,因为您从字符串数组开始。

【讨论】:

  • 感谢您的回复!因此,调用将是: java addOdds( 2 3 7 8 4 1) 如果我错了,请纠正我,但这不需要 Scanner 因为它在命令行中给出了参数?我猜我在代码中摸索了一些地方,它一直告诉我找不到我的课程。我正在发布问题的更新。
  • @Yarou:不,你会按照我在答案中显示的方式来称呼它。 :-) 是的,它不需要Scanner,因为您使用的是命令行参数。
  • 谢谢!我进入目录并尝试按照您提到的那样运行它,终端返回“找不到我的班级”。我打赌我在其余代码中搞砸了。我发布了到目前为止的内容。如果有帮助,我正在使用 Netbeans IDE。
【解决方案2】:

您可能想考虑用逗号分隔一个String?见这里:How to split a string in Java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2014-11-06
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多