Zaten tersine çevrilmiş bir dize nasıl tersine çevrilir?

Bir kullanıcının bir kelime veya cümle ya da cümle girmesine izin veren bir program yaptım ve tersine çevirip sonucu gösterdim.

Benim sorunum, onu çalıştırdığımda tersine çeviriyor olması, ancak tüm istediğim kelimeleri girildikleri gibi tutmak ve sadece onları tersine çevirmek.

İşte şu an sahip olduğum şey

//import statements
import java.util.*;     //for scanner class


// class beginning

class  WordReverser {
public static void main(String[] args ) {

    //Declare variables area
    String original, reverse = "";
    Scanner in = new Scanner(System.in);
    boolean blankString = false;
    public StringBuilder reverse();

   //beginning message to user to explain the program
    System.out.println("Welcome to my reverse word program!");
    System.out.println("Please enter in a word or a phrase and see it reversed: ");

    //main code and calculations to do
    while (!blankString){
        System.out.println("Enter a string to reverse");//Collect inputs from user.
        original = in.nextLine();
        if (original.equals(""))
        {
            blankString = true ;
        }
        else {
            int length = original.length();

            for ( int i = length - 1 ; i >= 0 ; i-- )
                reverse = reverse + original.charAt(i);

            System.out.println("Reverse of entered string is: "+reverse);//Output results here
        }
    }

    //End program message
    System.out.println();
    System.out.println("Hope you enjoyed using this program!");
}// end main method


 }// end class
0
Geriye doğru yöntemi tekrar arayabilirsiniz, değil mi?
katma yazar MaxZoom, kaynak
Geriye doğru yöntemi tekrar arayabilirsiniz, değil mi?
katma yazar MaxZoom, kaynak

12 cevap

Açıkçası bir ev ödevi sorusu, bu yüzden size doğru yönde bir kuvveti vereceğim, ancak tam cevabı vermeyeceğim. Dizenin tamamını değil, aynı anda bir kelimeyi tersine çevirmeniz gerekir.

Bu sözde kodu uygulayan bir şeye ihtiyacınız var:

original = getStringFromUser();
words[] = breakIntoWords(original);
foreach word in words {
    reversed = reverse(word);
    print reversed;
}

reverse(string word)
{
    return reversed version of the input
}

breakIntoWords(sting sentence)
{
    return array with each word as a sep.element
}

Belgeleri okursanız, reverse ve breakIntoWords öğelerini zaten sizin için orada bulabilirsiniz; bu nedenle doğru yöntemleri aramanız gerekir.

2
katma

Açıkçası bir ev ödevi sorusu, bu yüzden size doğru yönde bir kuvveti vereceğim, ancak tam cevabı vermeyeceğim. Dizenin tamamını değil, aynı anda bir kelimeyi tersine çevirmeniz gerekir.

Bu sözde kodu uygulayan bir şeye ihtiyacınız var:

original = getStringFromUser();
words[] = breakIntoWords(original);
foreach word in words {
    reversed = reverse(word);
    print reversed;
}

reverse(string word)
{
    return reversed version of the input
}

breakIntoWords(sting sentence)
{
    return array with each word as a sep.element
}

Belgeleri okursanız, reverse ve breakIntoWords öğelerini zaten sizin için orada bulabilirsiniz; bu nedenle doğru yöntemleri aramanız gerekir.

2
katma

Sorunları çözmenin anahtarı, çözülmesi daha kolay olan küçük parçalara nasıl ayrılacağını öğrenmektir. Bu iyi bir problem çözme tekniğidir ve programlamanın merkezindedir.

Bir cümlede harflerin nasıl ters çevrileceğini biliyorsunuz. Her sözcükteki harfleri tersine çevirmek istiyorsunuz, ancak sözcükleri orijinal sıralarında bırakın. Veya, başka bir yolla söylemek isterseniz:

  1. Cümleyi ayrı kelimelere böl.
  2. Her kelimeyi birer birer ters çevirin.
  3. Kelimeleri bir cümleyle tekrar bir araya getirin.

Umarım bu adımların her biri daha yönetilebilirdir. Olmazsa, onları daha küçük adımlara nasıl ayırabileceğinizi düşünün. Mesela, # 2 için belki bir döngüye ihtiyacınız var ve o döngü içinde bir şey.

2
katma

Sorunları çözmenin anahtarı, çözülmesi daha kolay olan küçük parçalara nasıl ayrılacağını öğrenmektir. Bu iyi bir problem çözme tekniğidir ve programlamanın merkezindedir.

Bir cümlede harflerin nasıl ters çevrileceğini biliyorsunuz. Her sözcükteki harfleri tersine çevirmek istiyorsunuz, ancak sözcükleri orijinal sıralarında bırakın. Veya, başka bir yolla söylemek isterseniz:

  1. Cümleyi ayrı kelimelere böl.
  2. Her kelimeyi birer birer ters çevirin.
  3. Kelimeleri bir cümleyle tekrar bir araya getirin.

Umarım bu adımların her biri daha yönetilebilirdir. Olmazsa, onları daha küçük adımlara nasıl ayırabileceğinizi düşünün. Mesela, # 2 için belki bir döngüye ihtiyacınız var ve o döngü içinde bir şey.

2
katma

Kelime sırasını tersine çevirmek ister misiniz? Bu durumda giriş dizesini "" de bölmek zorunda kalacaksınız.

Bunu yapmak için, diğer bloğunuz olmalıdır

String[] words = original.split(" ");
for(int i = words.length-1; i>=0; i--)
    reverse += words[i] + " ";
System.out.println("Reverse of entered string is: "+reverse);
1
katma

Kelime sırasını tersine çevirmek ister misiniz? Bu durumda giriş dizesini "" de bölmek zorunda kalacaksınız.

Bunu yapmak için, diğer bloğunuz olmalıdır

String[] words = original.split(" ");
for(int i = words.length-1; i>=0; i--)
    reverse += words[i] + " ";
System.out.println("Reverse of entered string is: "+reverse);
1
katma

Sorununuzu çözmek için kodunuzu biraz değiştirdim. İlk önce ters mantığınızı ayrı bir metoda koydum

public static String reverse(String strToReverse) {

        String original = strToReverse, reverse = "";

        boolean blankString = false;

        if (original.equals(""))
        {
                blankString = true ;
         }
         else {
            int length = original.length();

            for ( int i = length - 1 ; i >= 0 ; i-- )
                 reverse = reverse + original.charAt(i);
         }

        return reverse;

}

İkinci olarak dizginizi kelimelere ayırdım (kelimelerin basit boşluklarla ayrıldığı varsayılarak)

public static void main(String[] args ) {

    //Declare variables area
    String original, reverse = "";
    Scanner in = new Scanner(System.in);
    boolean blankString = false;
    //public StringBuilder reverse();

   //beginning message to user to explain the program
    System.out.println("Welcome to my reverse word program!");
    System.out.println("Please enter in a word or a phrase and see it reversed: ");

    //main code and calculations to do
    while (!blankString){
        System.out.println("Enter a string to reverse");//Collect inputs from user.
        original = in.nextLine();
        if (original.equals(""))
        {
            blankString = true ;
        }
        else {

            String[] words = original.split(" ");
            String[] reversedWords = new String[words.length];
            StringBuilder reverseBuilder = new StringBuilder();
            for (int index = 0; index < words.length; index++) {
                reversedWords[index] = reverse(words[index]);
                reverseBuilder.append(reversedWords[index] +  " ");
            }


            System.out.println("Reverse of entered string is: "+reverseBuilder.toString());//Output results here
        }
    }

    //End program message
    System.out.println();
    System.out.println("Hope you enjoyed using this program!");
}// end main method

İşte bir yürütme örneği:

reverse

0
katma

Sorununuzu çözmek için kodunuzu biraz değiştirdim. İlk önce ters mantığınızı ayrı bir metoda koydum

public static String reverse(String strToReverse) {

        String original = strToReverse, reverse = "";

        boolean blankString = false;

        if (original.equals(""))
        {
                blankString = true ;
         }
         else {
            int length = original.length();

            for ( int i = length - 1 ; i >= 0 ; i-- )
                 reverse = reverse + original.charAt(i);
         }

        return reverse;

}

İkinci olarak dizginizi kelimelere ayırdım (kelimelerin basit boşluklarla ayrıldığı varsayılarak)

public static void main(String[] args ) {

    //Declare variables area
    String original, reverse = "";
    Scanner in = new Scanner(System.in);
    boolean blankString = false;
    //public StringBuilder reverse();

   //beginning message to user to explain the program
    System.out.println("Welcome to my reverse word program!");
    System.out.println("Please enter in a word or a phrase and see it reversed: ");

    //main code and calculations to do
    while (!blankString){
        System.out.println("Enter a string to reverse");//Collect inputs from user.
        original = in.nextLine();
        if (original.equals(""))
        {
            blankString = true ;
        }
        else {

            String[] words = original.split(" ");
            String[] reversedWords = new String[words.length];
            StringBuilder reverseBuilder = new StringBuilder();
            for (int index = 0; index < words.length; index++) {
                reversedWords[index] = reverse(words[index]);
                reverseBuilder.append(reversedWords[index] +  " ");
            }


            System.out.println("Reverse of entered string is: "+reverseBuilder.toString());//Output results here
        }
    }

    //End program message
    System.out.println();
    System.out.println("Hope you enjoyed using this program!");
}// end main method

İşte bir yürütme örneği:

reverse

0
katma

Çok şık olmasa bile, bununla çabucak başa çıkmanın 2 yolunu görüyorum

  1. Yapılması en kolay şey, döngüdeki stdin'den eklenmiş String originalWords gibi bir şey adı verilen üçüncü bir değişken oluşturmak olacaktır.

  2. Mevcut 'orijinal' Dize'yi yukarıdakiyle aynı yapmak için yeniden kullanın ve ardından ikinci bir döngüde tersten döndürün.

0
katma

Çok şık olmasa bile, bununla çabucak başa çıkmanın 2 yolunu görüyorum

  1. Yapılması en kolay şey, döngüdeki stdin'den eklenmiş String originalWords gibi bir şey adı verilen üçüncü bir değişken oluşturmak olacaktır.

  2. Mevcut 'orijinal' Dize'yi yukarıdakiyle aynı yapmak için yeniden kullanın ve ardından ikinci bir döngüde tersten döndürün.

0
katma

Giriş dizesini ayrı bir kelime dizisine bölebilir ve daha sonra dizideki her bir kelimeyi ayrı ayrı tersine çevirebilirsiniz.

Kod için buna bakın.

0
katma

Giriş dizesini ayrı bir kelime dizisine bölebilir ve daha sonra dizideki her bir kelimeyi ayrı ayrı tersine çevirebilirsiniz.

Kod için buna bakın.

0
katma