2016-03-28 16 views
0

Başlık kendisi için konuşur. Temel kodlamayı kullanarak polinom fonksiyonlarını bütünleştiren bir hesap makinesi oluşturmaya çalışıyorum, sadece bir matematik operatörünü benim için yapmaya çalışmak :). Bir duvara çarpana kadar çok uzağa gitmem gerekmedi, çünkü bir yol bulamadım: sayısal olmayan bir karaktere ulaşılana kadar orijinal dizede sayıların bir alt dizisini oluşturun. Yani dize 123x ise, 'x' olmadan 123 bir alt dizgi oluşturmak istiyorum. İşte ben bugüne kadar ne var ise: string 'işlevi' 32x^4 ise, temelde tüm biraz saçma görünüyorJava - Sayısal olmayan bir karaktere ulaşılana kadar bir alt tabaka nasıl oluşturulur?

public static void indefinite() 
{ 
    int x = 0; 
    System.out.print("Enter your function to integrate:\n F "); 
    Scanner input = new Scanner(System.in); 
    String function = input.nextLine(); 
    String s1 = ""; 
    for (int i = 0; i < function.length(); i++) 
    { 
     s1 = s1 + function.substring(x, i+1); 
     x = i+1; 
    } 
} 

ama ben alt dize ı anlamak gerekir 32. olmak istiyorum gerisini ben kendim, ama bu bölüm yapamam.

p.s. Döngü tekrarı değişkeninin yanlış olduğunu biliyorum, sadece 2x^3'ten daha fazla fonksiyonlara baktığımda dizenin sonuna kadar tekrar etmemeliyim. Bunu anlamaya çalışmadım, bu yüzden bunu 1 parça için yaptım.

Sen, mektup haneli işaretleri adresinden dize bölmek şöyle olabilir

cevap

2

: Mesela

str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"); 

, "123x54y7z" [123, x, 54, y, 7, z]

1

Kullanım replaceAll() it "ayıklamak" dönecektir:

String number = str.replaceAll("\\D.*", ""); 

Bu, ilk basamak basamağının yerini alır ve her şeyin ardından hiçbir şey yapmadan (etkin bir şekilde silerek), yalnızca sayıyla birlikte kalır.

Ayrıca (benim gibi) tercih ederseniz daha az koduna sahip bir String değişkeni kullanmak zorunda kalmadan, sayısal ilkel doğrudan gidebilirsiniz:

int number = Integer.parseInt(str.replaceAll("\\D.*", "")); 
İlgili konular