Ignorowanie stringów ( wyrazów/ liter )

Odpowiedz Nowy wątek
2019-05-14 00:09
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());
edytowany 5x, ostatnio: simonsoft, 2019-05-14 00:28

Pozostało 580 znaków

2019-05-14 00:51

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.

Pozostało 580 znaków

2019-05-15 20:18
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);

    }
}
edytowany 1x, ostatnio: simonsoft, 2019-05-15 20:20

Pozostało 580 znaków

2019-05-15 22:48
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();
edytowany 2x, ostatnio: simonsoft, 2019-05-15 22:49

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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