2015-06-20 1 views
-2

Я собираюсь запрограммировать свое первое приложение. Я хотел бы использовать цикл do-while. Я хочу, чтобы кнопка вычисляла что-то из edittexts. После этого я хочу спросить у пользователя, хочет ли он или она что-то снова вычислить. Я думаю, что цикл do-while будет отличным, потому что у меня еще нет ни одного приложения. Проблема в том, что я не уверен, как это сделать? То, как я пытался это сделать, всегда говорит, что мне нужно удалить токен, пока ... Возможно, это потому, что он находится в инструкции if/else. Другая проблема заключается в том, что я не знаю, как запрограммировать условие while. возможно ли это с диалогом предупреждения?do-while loop in android app

Мой вопрос: что сжимает мой цикл? Что мне нужно для записи в состоянии while для контроля, если пользователь нажал ok в диалоговом окне altert? Как добавить кнопку «Нет» в диалоговое окно предупреждения?

@Override 
    public void onClick(View v) { 
     if(v==buttonspritkosten){ 

do{   

      //Variablen erzeugen 
      TextView textViewPersonenzahl; 
      TextView textViewStrecke; 
      TextView textViewVerbrauch; 
      TextView textViewPreis; 
      double berechnung; 
      String personenzahl; 
      String strecke; 
      String verbrauch; 
      String preis; 



      // Eingabefelder auslesen  
      textViewPersonenzahl = (TextView) findViewById(R.id.editpersonen); 
      textViewStrecke = (TextView) findViewById(R.id.editstrecke); 
      textViewVerbrauch = (TextView) findViewById(R.id.editverbrauch); 
      textViewPreis = (TextView) findViewById(R.id.editpreis); 
      //In strings umwandeln 
      personenzahl=textViewPersonenzahl.getText().toString(); 
      strecke=textViewStrecke.getText().toString(); 
      verbrauch=textViewVerbrauch.getText().toString(); 
      preis=textViewPreis.getText().toString(); 


        // Prüfen ob Felder ausgefüllt wurden mit der Methode Felderprüfung 
        if (Felderprüfung(personenzahl) == true && Felderprüfung(strecke) == true && Felderprüfung(verbrauch)== true && Felderprüfung(preis) == true) { 


         //Prüfen ob sie Strecke zu kurz ist und ggf. AltertDialog starten 
         if(Double.parseDouble(strecke)< 4){ 

          String message = "Schonen Sie doch lieber die Umwelt und gehen zu Fuß! ;)"; 
          new AlertDialog.Builder(Berechnungsactivity.this) 
          .setTitle("Umweltschutz") 
          .setMessage(message) 
          .setPositiveButton("ok", null) 
          .show();} 


        berechnung= ((((Double.parseDouble(strecke))/100)*(Double.parseDouble(verbrauch)))*(Double.parseDouble(preis)))/(Double.parseDouble(personenzahl)); 

        spritkosten.setText("Die Spritkosten betragen: "+ berechnung + " € pro Person"); 


      }else{ 
       Toast einToast = Toast.makeText(this, "Bitte füllen Sie die Felder aus, damit Calci rechnen kann!", Toast.LENGTH_LONG); 
       einToast.show(); 
      } 

        String message = "Möchten Sie eine weitere Berechnung durchführen?"; 
        new AlertDialog.Builder(Berechnungsactivity.this) 
        .setMessage(message) 
        .setPositiveButton("ok", null) 
        .show();  



}while() 



      } 

     else if (v == buttonabbrechen) { 
      // sollte der User Abbrechen drücken, soll die App beendet werden 
      finish(); 


     } 


    } 

В failtures являются:

Синтаксическая ошибка в знак (ы), неуместны конструкта (s) Спасибо за вашу помощь!

Синтаксическая ошибка на лексемах, удалить эти маркера

+1

Не уверен, что вы хотите спросить ??? – Pankaj

+1

Сначала выполните инициализацию переменных вне цикла d-while, потому что вы не хотите делать это все время, просто нужно ist один раз. – Moritz

+1

Второй: используйте английский язык во время программирования .. всегда! :-) Я имею в виду для вас varaible, имена методов и комментарии. – Moritz

ответ

1

Вы должны поймать, если пользователь нажимает что-то вроде «нет»:

boolean someBool = true; 

.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        someBool = false; 
       } 
      }); 
do{ 
    some code 
}while(someBool); 

Вы можете установить логическое значение, если пользователь нажимает «нет» false и проверить внутри условия while, если это все еще верно. Если теперь, тогда цикл while выйдет.

Смотреть еще здесь AlertDialog и как поймать действия пользователя: https://developer.android.com/guide/topics/ui/dialogs.html#DialogFragment

+0

Когда еще неясно, дайте мне подсказку, и я пытаюсь дать более подробное решение. – Moritz

+0

Не могли бы вы выставить мне часть «.setNegativeButton (R.string.cancel, new DialogInterface.OnClickListener() { public void onClick (диалог DialogInterface, int id)« Будет ли кнопка? Что делает все части здесь есть код? – Vivian

+0

Хм..хорошо, вы должны прочитать ссылку, которую я разместил, там вы можете прочитать, что этот код создает кнопку в диалоговом окне. – Moritz