Нужна помощь в разбиении строки на два отдельных целых числа для обработки - PullRequest
2 голосов
/ 11 сентября 2011

Я работаю над некоторыми структурами данных в Java, и я немного застрял в том, как разбить эту строку на два целых числа.Обычно пользователь вводит строку типа «1200: 10».Я использовал indexOf, чтобы проверить, присутствует ли :, но теперь мне нужно взять число перед двоеточием, установить его на val и установить другое число на rad.Я думаю, что я должен использовать substring или parseInt методы, но я не уверен.Код ниже также можно посмотреть на http://pastebin.com/pJH76QBb

import java.util.Scanner;  // Needed for accepting input

 public class ProjectOneAndreD
 {
    public static void main(String[] args)
    {
        String input1;
        char coln = ':';
        int val=0, rad=0, answer=0, check1=0;

        Scanner keyboard = new Scanner(System.in);  //creates new scanner class
        do
        {
            System.out.println("****************************************************");
            System.out.println("             This is Project 1. Enjoy!              ");     //title
            System.out.println("****************************************************\n\n");

            System.out.println("Enter a number, : and then the radix, followed by the Enter key.");
            System.out.println("INPUT EXAMPLE:  160:2   {ENTER} ");     //example

            System.out.print("INPUT:  ");               //prompts user input.
            input1 = keyboard.nextLine();       //assigns input to string input1


            check1=input1.indexOf(coln);

            if(check1==-1)
            {
                System.out.println("I think you forgot the ':'.");

            }
            else
            {
                System.out.println("found ':'");

            }
        }while(check1==-1);
    }
 }

Ответы [ 3 ]

2 голосов
/ 11 сентября 2011

Подстрока будет работать, но я бы порекомендовал изучить String.split.

Команда split создаст массив строк, которые затем можно использовать parseInt, чтобы получить целочисленное значение.

String.split принимает строку регулярного выражения, поэтому вы можете не захотеть просто добавлять в нее какую-либо строку.

Попробуйте что-то вроде этого:

"Your|String".split("\\|");, где |символ, который разделяет две части строки.

Два обратных слеша сообщат Java, что вам нужен именно этот символ, а не выражение regex для |.Это действительно имеет значение только для некоторых персонажей, но это безопаснее.

Источник: http://www.rgagnon.com/javadetails/java-0438.html

Надеюсь, это поможет вам начать.

1 голос
/ 11 сентября 2011

сделать это

    if(check1==-1)
    {
        System.out.println("I think you forgot the ':'.");

    }
    else
    {
     String numbers [] = input1.split(":"); //if the user enter 1123:2342 this method 

     //will
     // return array of String which contains two elements numbers[0] = "1123" and numbers[1]="2342"
    System.out.print("first number = "+ numbers[0]);
    System.out.print("Second number = "+ numbers[1]);
    }
1 голос
/ 11 сентября 2011

Вы знали, где находится :, используя indexOf.Допустим, длина строки равна n , а : произошло с индексом i.Затем запросите подстроку (int beginIndex, int endIndex) от 0 до i-1 и i + 1 до n-1 .Еще проще использовать String :: split

...