Ignorowanie stringów ( wyrazów/ liter )

0

Witam, mam problem w tym ze moja funkcja powinna ignorowac wyrazy dopoki nie dostanie liczby(lub wektora) i nie mam pojecia jak to zrobic, moglby mnie ktos naprowadzic? Poki co zrobilem tak ze sprawdzam czy charAt(0) jest liczba, ale jest to zle zrobione, bo jak wpisuje kolejny ciag wyrazow/liczb to on caly czas sprawdza tylko to pierwsze. Moglby mnie ktos naprowadzic?

public static Vector<Integer> ReadVector(String data)
    {
        Scanner in = new Scanner(data);
        Vector<Integer> vector = new Vector<Integer>();

        do
        {
            while(in.hasNext())
            {
                if(in.hasNextInt())
                {
                    vector.add(in.nextInt());
                }
                else in.next();
            }                                   
        }while (!Character.isDigit(data.charAt(0)));      

        in.close();

        return vector;
    }

Wywolanie funkcji :

                System.out.println("Podaj pierwszy wektor : ");
                Vector<Integer> A = ReadVector(odczyt.readLine());
                System.out.println("Podaj drugi wektor : ");
                Vector<Integer> B = ReadVector(odczyt.readLine());
1

Według mnie ta zewnętrzna pętla do - while jest niepotrzebna. Filtrowanie masz załatwione przez hasNextInt ze Scannera. BTW - preferuj używanie list zamiast vectora.

0

Dobra, ogarnalem na listach tylko ze wyskakuje mi blad "NoSuchElementException" wiem, ze musze chyba gdzies wrzucic petle while(hasNext()) ale nie wiem w ktorym momencie, moglby ktos pomoc? z gory dzieki

package com.example.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.Vector;

public class czeker 
{

    public static boolean isNumeric(String strNum) 
    {
        try 
        {
            double d = Double.parseDouble(strNum);
        } catch (NumberFormatException | NullPointerException nfe) 
        {
            return false;
        }
        return true;
    }

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Dawaj wektor :");
        String data = in.nextLine();
        String dataStr[] = data.split(" ");
        List<Integer> dataInt = new ArrayList<Integer>();

            int a = 0;

            for (int i = 0; i < dataStr.length; i++)
            {

                if(isNumeric(dataStr[i]))
                    {
                        a = Integer.parseInt(dataStr[i]);
                    }
                dataInt.add(a);
            }

            Vector<Integer> vector = new Vector<Integer>();

            vector.addAll(dataInt);

            in.close();

        System.out.println(vector);

    }
}
0

Dziwne, bo zdebugowalem sobie i funkcja sie wywala dopiero jak kolejny raz ja wywoluje przy Vector<integer> B = ReadVector(); wchodzi do ReadVector i wywala sie przy String data = in.nextLine();
a zwraca dobrze wektor A za pierwszym razem jak wywoluje.

                System.out.println("Podaj pierwszy wektor : ");
                Vector<Integer> A = ReadVector();
                System.out.println("Podaj drugi wektor : ");
                Vector<Integer> B = ReadVector();

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0