2015-11-11 2 views
0
public static void main(String[] args) throws FileNotFoundException { 
    Scanner sc = new Scanner(new FileReader(args[1])); 
    String co = sc.next(); 
    coup = Integer.parseInt(co); 

Я получаю исключение FileNotFoundException, когда пытаюсь передать int во второй аргумент в командной строке. Это только часть кода, текстовый файл передается как args [0]. Однако я не могу понять, как передать простое целое число, только текстовые файлы.Java Передача int через команду

+1

Вы получаете «FileNotFoundException», который предполагает, что ваша программа не может найти указанный файл. Сначала я сосредоточусь на решении этой проблемы. – MadProgrammer

+0

Я не уверен, правильно ли я прав, но вы можете просто использовать 'int coup = Integer.parseInt (args [1]);'? – pzaenger

+0

Вы говорите, что текстовый файл читается через 'args [0]', так что вы делаете с 'args [1]'? – Makoto

ответ

1
public static void main(String[] args) throws Exception 
{ 
    Scanner scan = new Scanner(new FileReader(args[0])); 
    int integerFromCM = Integer.parseInt(args[1]); 
} 

Вы утверждаете, что текстовый файл является первым аргументом (арг [0]), так что приписывать, что в сканере и при захвате целое все, что вам нужно сделать, это отправить арг [1] в метод Integer.parseInt , Вы получаете исключение, потому что вы назначаете объект FileReader с именем файла целое число передается в

+0

Я думаю, что ваше решение сработало, но я еще не совсем уверен. Я объявил статическую переменную в классе, могу ли я изменить ее в основном, читая? int coup = 0; в классе, то coup = Integer.parseInt (args [1]); в основном? Это компиляция, поэтому я думаю, что это хорошо. – user3364161

+0

@ user3364161 да, вы можете просто изменить вторую строку кода внутри основного метода (coup = Integer.parseInt (args [1]);) – user2494817

0

Вы не можете передать int, но вы можете разобрать одно:

public static void main(String[] args) { 
    String filename = args[0]; 
    int i = Integer.parseInt(args[1]); 
    // ... 
} 

Если вы получаете FileNotFoundException, один простой способ отладки это:

File file = new File(filename); 
System.out.println(file.getAbsolutePath()); 

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

0

Просмотр кода он выглядит следующим образом:.

  1. Создать сканер для чтения файла в первом аргумент командной строки
  2. Получить первое число от этого сканера в виде строки
  3. Разобрать, что строки в Int

отчетливо секвенировали требует файл фр ом первый аргумент, и похоже, что он предназначен.

Создайте файл с именем number.txt:

42 

NumberPrinter.java:

import java.io.Scanner; 
import java.io.FileReader; 

public final class NumberPrinter { 
    public static void main(String[] args) throws Exception { 
     Scanner scanner = new Scanner(new FileReader(args[1])); 
     String numberInFile = scanner.next(); 
     int number = Integer.parseInt(numberInFile); 
     System.out.println(number); 
    } 
} 

Run следующим образом:

java NumberPrinter number.txt 

И он будет печатать:

42 

В качестве альтернативы, если вы собираетесь разобрать Int непосредственно из параметров командной строки попробовать:

public final class NumberPrinterDirect { 
    public static void main(String[] args) throws Exception { 
     int number = Integer.parseInt(args[0]); 
     System.out.println(number); 
    } 
} 

NumberOrFilenameAwkward.java:

import java.io.Scanner; 
import java.io.FileReader; 

public final class NumberOrFilenameAwkward { 
    public static void main(String[] args) throws Exception { 
     int number; 
     try { 
      number = Integer.parseInt(args[0]); 
     } catch (NumberFormatException thisIsVeryUgly) { 
      Scanner scanner = new Scanner(new FileReader(args[1])); 
      String numberInFile = scanner.next(); 
      number = Integer.parseInt(numberInFile); 
     } 
     System.out.println(number); 
    } 
} 

Это ужасное решение и кричит с помощью командной строки, синтаксический библиотеку, например JewelCLI или commons-cli, чтобы решить эту проблему.

+0

Я закончил с использованием int x = Integer.parseInt (args [0 ]); который разработал. Благодаря! – user3364161

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