2016-11-18 5 views
2

Я программирую в java, и у меня также очень мало опыта программирования.Java: Сканирование строки, затем поиск целого числа

Я пытаюсь создать там программу, в которой вы сначала пишете целое число в сканере. В следующем окне вы должны написать только одно целое число и целое число, которое программа будет искать и определить, есть ли оно или нет в «Номер сканера»

Моя проблема в том, что когда я, например, пишу 1 2 3 и в следующем окне напишите 2, он не признает, что в сканере есть 2, но если я вместо этого напишу 1, он будет хорошо работать. Heres код:

public class Inlämningsuppgift_kap9 { 

    public static void main(String[] args) { 
     String s1 = JOptionPane.showInputDialog("Write any number of integers!"); 
     Scanner sc1 = new Scanner(s1); 

     String s2 = JOptionPane.showInputDialog(
      "Chose a integer that the program will search for!" 
     ); 
     int a = Integer.parseInt(s2); 

     while(sc1.hasNextInt()){ 
      if(a == sc1.nextInt()){ 
       JOptionPane.showMessageDialog(null, "The integer can be found"); 
       System.exit(0); 
      } 
      else { 
       JOptionPane.showMessageDialog(null, "The integer cannot be found"); 
       System.exit(0); 
      } 
     } 
    } 
} 

Спасибо за любую помощь!

+0

Вашего 'if' заявление рассматривает только первый' int' в 'String', а затем вызывает' System.exit (0); ' – bradimus

+0

Спасибо за быструю "принимать" обратную связь ! – GhostCat

ответ

0

Не собираюсь делать свою домашнюю работу для вас, но намека есть: это не очень хорошая идея смеси свинга UI и сканер, который считывает из stdin.

Другими словами: либо использовать графический интерфейс для всех входов/выходов; или просто читать/писать с/на stdin (используя out.println и этот код сканера).

И затем: при условии, что пользователь сначала вводит строку, такую ​​как «1 2 3 4 5»; вам потребуется дополнительная обработка. У вас должно быть split эта строка (например, в пробелах); а затем перевернуть каждую из этих подстрок ... в действительное число. Следующим шагом будет попросить пользователя ввести номер . И когда вы хотите узнать, есть ли один номер в списке других номеров, вам нужно превратить свою начальную строку в этот список чисел!

Итак, вы хотите изучать Javadoc для:

0

Вы не должны разбирать ввод. делает намного проще делать то, что вы хотите.

String s1 = JOptionPane.showInputDialog("Write any number of integers!"); 
String s2 = JOptionPane.showInputDialog("Chose a integer that the program will search for!"); 
    for(int i=0;i<s1.length();i++){ 
     if(s1.charAt(i)==s2.charAt(0)){ 
      JOptionPane.showMessageDialog(null, "The integer can be found"); 
      System.exit(0); 
     } 
    } 
    JOptionPane.showMessageDialog(null, "The integer cannot be found"); 
    System.exit(0); 

я люблю это решение больше, так как она имеет меньше закодировать все еще работает отлично

0

позволяет просто anylyze код и надеюсь, что я не ошибаюсь :), переменные инициализируются, затем вы начинаете цикл с

while (sc1.hasNextInt())

он в основном работает в течение x раз, где x - количество входов (длина переменной sc1), тогда вы проверяете, является ли число в текущей итерации числом, которое вы ищете. Если это вы печатаете код успеха и закрываете цикл. если это не вы распечатываете код ошибки и также закрываете петлю. Поэтому, когда вы предоставляете 1 в качестве ввода, выполнение выполняется нормально, потому что 1 является первым элементом, но 2, поскольку второй аргумент никогда не тестируется из-за

Система.Выход (0);

в скобках Чужой

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