Meerdere waarden in Java

Schreef ik een functie in Java en ik wil deze functie om meerdere waarden. Behalve het gebruik van de array en structuur, is er een manier om meerdere waarden retourneren?

Mijn code:

String query40 = "SELECT Good_Name,Quantity,Price from Tbl1 where Good_ID="+x;
Cursor c = db.rawQuery(query, null);
if (c!= null && c.moveToFirst()) 
{
  GoodNameShow = c.getString(0);
  QuantityShow = c.getLong(1);
  GoodUnitPriceShow = c.getLong(2);
  return GoodNameShow,QuantityShow ,GoodUnitPriceShow ;
}
  • Wat telt is niet “Eclipse” maar de taal (Java).
  • Ik realiseer je code is pseudo-Java, maar zorg ervoor dat u de naam van uw variabelen met camelCase (bijv. goodNameShow of goodUnitPriceShow).
InformationsquelleAutor shadi | 2012-11-15

 

2 Replies
  1. 29

    In Java, wanneer u een functie om meerdere waarden retourneren, moet u

    • insluiten die waarden in een object, dat je terug
    • of wijzigen van een object dat wordt doorgegeven aan de functie

    In uw geval, u duidelijk moeten definiëren een klasse Show die velden name, quantity en price :

    public class Show {
        private String name;
        private int price;
        //add other fields, constructor and accessors
    }

    wijzig uw functie

     public  Show  test(){
          ...
          return new Show(GoodNameShow,QuantityShow ,GoodUnitPriceShow) ;
    • Bedoel je dat Collection.sort is een slechte stijl ? Je kunt het niet maken een efficiënte code als u probeert om het te maken die begrijpelijk zijn voor mensen die niet weten dat de meest fundamentele feiten van de taal. Als iemand niet weet dat een ontvangen object kan gewijzigd worden door een methode, dan moet hij leren voordat ze worden betrokken in een professioneel team.
    • Het is nog steeds jammer dat talen leren niet van de CLU voorbeeld. CLU s met betrekking meervoudige opdracht is van semi-dubieuze gebruik (x,y = y,x), maar meerdere waarden retourneren is heel nuttig (x,y = function(params)). Het forceren van een verpakking object geretourneerd worden (vaak door ‘schone’ verklaringen vergelijkbaar met class Pair<A,B>)heeft een boete onder zeer veel strakke oproepen, en het passeren van een object aan te houden waarden retourneren is vreselijk rommelig met geen compiler garanderen dat de velden zijn ingevuld.
    • Je moet kijken naar waar bot retourneren meerdere waarden en meerdere opdrachten zijn zeer nuttig 😉
  2. -1

    Heb ik een zeer fundamentele aanpak om om te gaan met dit soort situaties.

    Ik heb een logica van seperator in Strings.

    Bijvoorbeeld als je nodig hebt om terug te keren in dezelfde functie
    1. int waarde
    2. dubbele waarde
    3. String waarde

    je kon gebruik maken van een tekst

    Bijvoorbeeld “,.,” dit soort van string zou over het algemeen niet verschijnen.

    Kon je terug een String bestaat uit alle waarden, gescheiden door deze separator
    “< int waarde >,.,< dubbele waarde >,.,< String value >”

    en om te zetten in een gelijkwaardige soorten waar de functie is aangeroepen met behulp van String.split(separtor)[index]

    Raadpleeg dan de volgende code voor uitleg –

    scheidingsteken =”,.,”

    public class TestMultipleReturns{
    
     public static void main(String args[]){
    
       String result =  getMultipleValues();
       int intval = Integer.parseInt(result.split(",.,")[0]);
       double doubleval = Double.parseDouble(result.split(",.,")[1]);     
        String strval = result.split(",.,")[2];
     }
    
     public static String getMultipleValues(){
    
       int intval = 231;//some int value      
       double doubleval = 3.14;//some double val
       String strval = "hello";//some String val
    
       return(intval+",.,"+doubleval+",.,"+strval);
    
     }
    }

    Deze benadering kan worden gebruikt als een snelkoppeling als u niet wilt dat uitbreiding van het aantal klassen voor alleen de functie retourneert

    Het hangt af van situatie tot situatie die aanpak te nemen.

    • Hoewel deze suggestie geen stijging van het aantal klassen, het is een verschrikkelijk aanpak om vele redenen: U meerdere onnodige objecten (StringBuilder, Strings) die zijn veel duurder dan een enkel exemplaar van een utility klasse. De inspanning van het ophalen van de waarden is niet te rechtvaardigen groot worden, vereist onnodige code en heeft een merkbare invloed op de prestaties. Zoals u al gemerkt heeft, wordt het scheidingsteken niet mogen verschijnen in de reeks en dat is meestal een ongerechtvaardigde hypothese.
    • Ik downvoted gewoon zodat mensen nooit daadwerkelijk gebruik maakt van deze aanpak. Het is slecht voor de prestaties en de leesbaarheid en de calee weet nooit wat te verwachten van een terugkeer als dat.
    • Ik weet dat deze aanpak is zeer slecht zover prestaties betreft, maar dat was slechts een deel van de praktijk die ik had gedaan toen ik was begonnen met programmeren. Ik heb voornamelijk gewerkt aan julia en matlab, waar u kunt meerdere vals als, terug var1,var2 enz… Dus toen ik begon met JAVA had ik net gedaan als onderdeel van het oefenen. Ik dacht eigenlijk dat het zou werken goed, maar daarna voelde ik me later dat geeft zeer slechte prestaties.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *