2015-02-02 3 views
0

Alright, так что я должен работать с этим в начале моего кода:Java 7: массив в качестве входных данных

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

Это было бы вернуть сумму.

У меня есть часть шансов добавления с предварительно загруженными массивами. Это было достаточно просто, но то, что меня раздражает, это то, как заставить это взять массив в качестве ввода от пользователя.

Я знаю сканер от java.utils, но я не уверен, как заставить его работать с моим кодом, чтобы заставить его взять массив (если он может).

Я рассматривал:

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

И вызов сканера с ним, и использовать 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))); 

    } 

Следуя совету TJ, я попытался следующие:

общественного класса задачи1 { государственной статической силы основных (String арг []) {

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 
} 
+1

Вы можете прочитать 'scanner.nextInt()' и добавить его в список. После того, как вы прочитали все данные от пользователя, используйте «Список».toArray() ' – alfasin

+0

Я не думаю, что есть другая альтернатива, использующая' loop' для этого .... – Runcorn

+0

@Runcorn почему вы думаете, что она не может использовать цикл? – alfasin

ответ

2

По крайней мере, два варианта:

  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 кажется мне проще, поскольку вы начинаете с массива строк.

+0

Спасибо за ответ! Таким образом, вызов будет: java addOdds (2 3 7 8 4 1) Исправьте меня, если я ошибаюсь, но это не требует сканера, потому что ему заданы аргументы в командной строке? Я предполагаю, что я пошарил где-то с моим кодом, он продолжает говорить мне, что он не может найти мой класс. Я отправляю обновление на вопрос. – Yarou

+0

@Yarou: Нет, вы бы назвали это так, как я показал его в ответ. :-) И да, это не требует «Сканера», потому что вместо этого вы используете аргументы командной строки. –

+0

Спасибо! Я записался в каталог и попытался запустить его, как вы сказали, терминал возвращает «не может найти мой класс». Я ставлю, что я что-то испортил в остальной части кода. Я опубликовал то, что у меня есть. Если это помогает, я использую NetBeans IDE. – Yarou

Смежные вопросы