2016-09-28 1 views
0

так, я делаю эту программу в качестве упражнения для того, чтобы узнать, Java,символ Javac не найдена ошибка, после импорта java.nio

import java.util.Scanner; 
import java.io; 
import java.nio; 

class wordsInLine { 

    public static void main(String args[]) { 

    int wordCount; 

    //checking for correct syntax 
    if (args.length > 1){ 
     System.out.println("Usage : java wordsInLine [path to text file to scan for words, ommit if you want to be asked for input]"); 
     System.exit(0); 
    } 

    //if the user has provided a path to a text file then read the file 
    if (args.length == 1) { 
     Path file = args[0]; 
     byte[] fileBytes; 
     fileBytes = Files.readAllBytes(file); 

     //convert the text of the file to a big string 
     String line = new String(fileBytes, StandardCharsets.UTF_8); 

    }else{ // else the user wants to give us his/her own line 

     //getting the users's input 
     Scanner input = new Scanner(System.in); 
     String line = input.nextLine(); 
    } 

    //call the word count function 
    wordCount = countWords(line); 

    //print result 
    System.out.println(wordCount + " words found in the input line"); 
} 


public static int countWords(String line){ 

    //vars for easier understanding and reading 
    final boolean IN = true; 
    final boolean OUT = false; 
    boolean isLetter; 
    boolean STATE = false; 

    //just counting the words here 
    int wordCount = 0; 

    //looping through every character of the user's input line 
    for (int i = 0, n = line.length(); i < n; i++){ 
     isLetter = Character.isLetter(line.charAt(i)); 

     if (isLetter == true){ 
      STATE = IN; 
     } 

     if ((STATE == IN) && (isLetter == false)){ 
       wordCount++;  
       STATE = OUT; 
     } 

     if (((STATE == IN) && (line.charAt(i) == '\n')) || ((STATE == IN) && (i == (line.length() - 1)))){ 
      wordCount++; 
      STATE = OUT; 
     } 
    } 

    return wordCount; 
} 

}

я пытаюсь скомпилировать это с помощью javac wordsInLine.java и я получаю wordsInLine.java:2: error: cannot find symbol import java.io; ^ symbol: class io location: package java wordsInLine.java:3: error: cannot find symbol import java.nio; ^ symbol: class nio location: package java wordsInLine.java:17: error: cannot find symbol Path file = args[0]; ^ symbol: class Path location: class wordsInLine wordsInLine.java:19: error: cannot find symbol fileBytes = Files.readAllBytes(file); ^ symbol: variable Files location: class wordsInLine wordsInLine.java:20: error: cannot find symbol String line = new String(fileBytes, StandardCharsets.UTF_8); ^ symbol: variable StandardCharsets location: class wordsInLine 5 errors

2-го и 3-го операторы импорта я нашел в Интернете, если я их опустим и я пытаюсь скомпилировать я получаю

wordsInLine.java:15: error: cannot find symbol 
     Path file = args[0]; 
     ^
symbol: class Path 
location: class wordsInLine 
wordsInLine.java:17: error: cannot find symbol 
     fileBytes = Files.readAllBytes(file); 
        ^
symbol: variable Files 
location: class wordsInLine 
wordsInLine.java:18: error: cannot find symbol 
     String line = new String(fileBytes, StandardCharsets.UTF_8); 
              ^
symbol: variable StandardCharsets 
location: class wordsInLine 

я гугле и много людей сказали, что я, возможно, имеют устаревшую Java и/или JAVAC версию,

java -version 

возвращает

java version "1.8.0_101" 
Java(TM) SE Runtime Environment (build 1.8.0_101-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode) 

также

javac -version 

возвращается

javac 1.8.0_101 

Я только начал изучать java, и я ударил кирпичную стену, может кто-то сказать мне, что мне здесь не хватает?

EDIT: после изменения 2-го и 3-го операторы импорта (предложенный @EJP) я получаю:

wordsInLine.java:17: error: cannot find symbol 
     Path file = args[0]; 
     ^
symbol: class Path 
location: class wordsInLine 
wordsInLine.java:19: error: cannot find symbol 
     fileBytes = Files.readAllBytes(file); 
        ^
symbol: variable Files 
location: class wordsInLine 
wordsInLine.java:20: error: cannot find symbol 
     String line = new String(fileBytes, StandardCharsets.UTF_8); 
              ^
symbol: variable StandardCharsets 
location: class wordsInLine 
3 errors 

ответ

0
import java.io; 
import java.nio; 

Ни одно из этих утверждений является законным Java. Вам нужно

import java.io.*; 
import java.nio.*; 

или лучше использовать функции IDE для импорта.

+0

Я пробовал, и это сработало, я не получаю символы не найденные ошибки в операторах импорта, но я получаю их на пути, файлы и стандартные символы.UTF_8. Проверьте нижнюю часть моего вопроса для получения более подробной информации. Также как импортируется 'java.util.Scanner;', но 'import java.io;' не так ли? – spirosbax

+0

Итак, вам нужно сделать то, что я сказал в последней строке моего ответа. В 2016 году действительно нет причин для типизации операторов импорта. Ответ на ваш последний вопрос - довольно тривиальная Java и найдена в JLS. – EJP

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