2015-05-20 3 views
0
import java.io.IOException; 
import java.util.Scanner; 


public class web_practice { 

    /** 
    * @param args 
    * @throws IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 

     Scanner scanner = new Scanner(System.in); 
     String input = scanner.next(); 

     int l = input.indexOf(' '); 
     String cmd = input.substring(0, l); 
     String end = input.substring(l); 

     if (cmd.equals("define")); 
     java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://dictionary.reference.com/browse/" + end)); 
    } 
} 

Я пытался создать код, чтобы найти определение слова, подключив его к dictionary.com и проверяя, говорят ли они слово «define» как первое слово?Разделение строки сканера

Разделение не работает.

+0

Где вы пользу? –

+0

Что означает «Разделение не работает»? Что такое вход? – Jens

+0

Можете ли вы ввести строковое значение 'input'? –

ответ

0

этот код будет работать для вас

String[] strArr = input.split(" ") ; 

    if(strArr[0].equals("define"){ 
    } 
+0

Как бы я мог получить остальную часть строки для добавления в конец URL-адреса. Я попытался сделать strArr [1], но он сказал, что это вне пределов. – CheeseMaster123

+0

код выше наверняка даст вам первое слово, остальные сделают это по-вашему. –

0

Ваша проблема заключается в том, что вы используете Scanner, которые по умолчанию поведение расколоть InputStream пробелами. Таким образом, когда вы вызываете next(), ваша строка input содержит только команду, а не всю строку. Используйте вместо этого метод Scanner.nextLine().

Также обратите внимание, что String end = input.substring(l); добавит пространство в концевую строку. Возможно, вы захотите использовать String end = input.substring(l+1);. Вот неподвижная main метода:

public static void main(String[] args) throws IOException { 
    Scanner scanner = new Scanner(System.in); 
    String input = scanner.nextLine(); 

    int l = input.indexOf(' '); 
    if(l >= 0) { 
     String cmd = input.substring(0, l); 
     String end = input.substring(l+1); 

     if (cmd.equals("define")); 
      java.awt.Desktop.getDesktop().browse(
       java.net.URI.create("http://dictionary.reference.com/browse/" + end)); 
    } 
} 
1
public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 

     Scanner scanner = new Scanner(System.in); 
     String input = scanner.next(); 

     int words[] = input.split(' '); 

     if (words[0].equalsIgnoreCase("define")) { 
      java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://dictionary.reference.com/browse/" + words[0])); 
     } 
    } 
0

От Class Scanner

Сканер разбивает свой вклад в лексемы с использованием шаблона разделителя, который по умолчанию соответствует пустому пространству. Затем полученные маркеры могут быть преобразованы в значения разных типов с использованием различных следующих методов.

Таким образом, вы не получите ' ', используя scanner.next(); метод. Скорее всего вы можете напрямую использовать scanner.next(); как:

Scanner scanner = new Scanner(System.in); 
String input = scanner.next(); 

if ("define".equals(input)){ 
    String end = scanner.next();// Next token 
    java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://dictionary.reference.com/browse/" + end)); 
} 

Смотрите результат: output

0

Проблема, которую я вижу в вашем коде, используя scanner.next(); метод next() прочтет следующий маркер без пространства для экс для консольного ввода define blabla значение input переменной будет define т.е. без места, поэтому в вашем случае нет символа пробела, поэтому input.indexOf(' '); вернет -1, давая исключение для substring(). Быстрое исправление будет изменять линию scanner.next(); до scanner.nextLine();, который будет читать всю строку, а не токен.

0
Scanner scanner = new Scanner(System.in); 
    String input = scanner.next();; 
    String[] inputs = input.split(" "); 
    if (inputs[0].equalsIgnoreCase("define")){ java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://dictionary.reference.com/browse/"));} 
+0

вы можете использовать метод String split(). он вернет вам массив строк. теперь вы можете получить свою строку по индексу. –

+0

Чтобы предотвратить ошибки нулевого указателя, вы должны использовать '' define '.equalsIgnoreCase (входы [0]) '-это считается хорошей практикой. – royhowie

+0

есть. вы правы b royhowie. Спасибо. –

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