Я пытаюсь преобразовать основные программы "String [] args" в 5 ints и 4 double. (я знаю, что это путают)
То, как я думал об этом, заключалось в том, чтобы цикл forreach перебирался через String args [] и добавлял их в массив int (для первых 5), однако мне приходилось использовать для массива, поэтому он не работает.
if (args != null) {
// If arguments where given, use the arguments and run the program
// NEED TO SOMEHOW CONVERT ARGS INTO INTEGER FORM AFTER BEING PASSED IN
ArrayList<Integer> valArr = new ArrayList<Integer>(10); // could be 9
for (String val : args) {
// Parse the string and add it to valArray
int temp = Integer.parseInt(val);
valArr.add(temp);
}
CarPark cp = new CarPark(valArr[0], valArr[1], valArr[2], valArr[3]);
это то, что я сейчас смотрю... я совершенно не прав? или закрыть?
Просто проанализируйте его двумя индексами for
циклов.
int[] myInts = new int[5];
double[] myDoubles = new double[4];
// Initialize these arrays with "defaults" here.
// Notice how we handle the possibility of the user not entering enough values.
for (int i = 0; i < Math.min(5, args.length); i++)
myInts[i] = Integer.parseInt(args[i]);
for (int i = 0; i < Math.min(4, args.length - 5); i++)
myDoubles[i] = Double.parseDouble(args[i+5]);
CarPark cp = new CarPark(myInts[0], myInts[1], myInts[2], myInts[3]);
[0]
, но начинает читать с args[5]
.
Вот ваш исправленный код: -
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
args=new String[4];
for(int i=0;i<4;i++){
System.out.println("Enter value no- "+(i+1));
args[i]=sc.nextLine();
}
ArrayList<Integer> valArr = new ArrayList<Integer>(10);
if (args != null) {
// If arguments where given, use the arguments and run the program
// NEED TO SOMEHOW CONVERT ARGS INTO INTEGER FORM AFTER BEING PASSED IN
// could be 9
for (String val : args) {
// Parse the string and add it to valArray
int temp = Integer.parseInt(val.trim());
valArr.add(temp);
}
}
System.out.println(valArr);
//CarPark cp = new CarPark(valArr[0], valArr[1], valArr[2], valArr[3]);
}
}
Это всего лишь код для целочисленной части аналогичным образом, вы можете расширить длину массива аргументов и включить двойные значения, Remeber для использования val.trim() для удаления пробелов, иначе он выкинет NumberFormatException.
посмотреть на ArrayList Doc
выше может быть так
CarPark cp = new CarPark(valArr.get(0), valArr.get(1), valArr.get(2), valArr.get(3));
Я думаю, что это должно сработать.
if (args != null) {
// If arguments where given, use the arguments and run the program
// NEED TO SOMEHOW CONVERT ARGS INTO INTEGER FORM AFTER BEING PASSED IN
ArrayList<Integer> valArr = new ArrayList<Integer>(10); // could be 9
for (String val : args) {
// Parse the string and add it to valArray
int temp = Integer.parseInt(val);
valArr.add(temp);
}
CarPark cp = new CarPark(valArr.get(0), valArr.get(1), valArr.get(2), valArr.get(3));
вам нужно получить значения из списка массивов, как указано ниже
CarPark cp = new CarPark(valArr.get(0), valArr.get(1), valArr.get(2), valArr.get(3));
for (int i = 0; i < 5; i++)
?NumberFormatException