Inlägg

Inlägg som floomer har skrivit i forumet
Av floomer
Skrivet av magnusvons:

1. Vet inte vad det kan bero på att den tar upp lagringsutrymme, möjligtvis att den behöver installera den emulatorn du väljer att använda men om du kör samma nästa gång borde det ju inte ta upp mer. Jag brukar använda Genymotion istället, tycker den är bättre.

2. Om appen dör brukar det vara lätt att se i Logcat vad det beror på där. Ser inte varför den skulle dö just nu i din kod, dock är det konstigt att newNr är en String. Som sagt kan man ofta se direkt i Logcat vad problemet orsakas av. Nästa gång kan du lägga in koden i taggar så den syns bättre på här.

3. AppCompatActivity är vad man bör använda men ActionBarActivity bör ge samma resultat.

4. Vet inte varför den blir så, som sagt rekommenderar jag Genymotion.

Tack för tipsen.
Fick det här rådet på ett annat forum :
You buttonClick() method should be buttonClick(View view).

Testade och det fungerade. Dock förstår jag ej varför eller vad View view är för slags variabel?

Av floomer

Ny på android studio, frågor.

Hej!
Har bråkat med detta i några dagar nu. Kommer inte igång riktigt pga allehanda problem.

1. Varje gång jag startar min AVD, virtuella mobil så äts min SSD disk upp bit för bit. Hjälper ej att stänga av android studio, ca 1 GB försvinner varje gång. Har vart tvungen att installera om AS flera gånger pga detta??

2. Har skapat lite knappar för att testa funktionen på dessa men allt som händer är att jag får ett meddelande som säger något i stil med , unfortunately, myProgram has stopped.
Här nedan följer koden:

package com.daniel.mycalculator;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

String newNr ="";

public void buttonClick(){
TextView textView = (TextView) findViewById(R.id.textView);
newNr = newNr + "1";
textView.setText(newNr);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}

3. ActionBarActivity var överstuken och googlade fram att man skulle ersätta denna med "AppCompatActivity", om det nu har någon betydelse.

4.Emulatorn lägger sig för långt upp på skärmen vilket gör att jag ej kommer åt att flytta eller stänga den på normalt vis.

Har koll på grunderna i Java men här känner jag mig ganska lost just nu...

Av floomer
Skrivet av Tobberoth:

Börja med att förklara hur du tänkte här:

public long compute2Power(int value) { if(value < 0) throw new IllegalArgumentException(); else if(value >= 0){ return getValueFromMemory(value); } else{ return computePower(value); } }

Om value är mindre än noll så är det en IllegalArgumentException, om value är noll eller högre hämtar du det från minnet. I vilken situation kommer "return computePower(value)" hända?

Ja visst tusan.. Jag tog för givet dumt nog att fanns det inget i minnet skulle programmet hoppa vidare. Den stora frågan för mig nu är bara vilket förhållande som ska ges till sista else if.. ? typ något i stil med ... else if(value == 0); else if(getValueFromMemory(value == 0); hmm..

Av floomer
Skrivet av Thornblom:

En stor del i att lära sig programmera är att själv lösa problem man får. Nu vet du exakt vad problemet är, att säga exakt vad du ska ändra är en björntjänst.

Jo jag förstår det *skäms* Ibland tar tålamodet slut dock..
Går en grundkurs i programmering och har klarat de flesta övningsuppgiftera utan större bekymmer på egen hand. Känns som den här uppgiften lirar i en lite högre division än vad vi befinner oss.

Av floomer
Skrivet av elklazor:

Vad är ens poängen med HashMap:en?
Sedan bör du nog fundera lite över hur du beräknar upphöjt:

return 2 * computePower(value-1);

HashMapen ska fungera som själva cache-minnet.

Angående upphöjt så fungerar den metoden alldeles utmärkt. Då kravet var att det skulle beräknas rekursivt och man ej fick använda math.pow.

Av floomer

Ok tack för din hjälp. Så vad exakt måste jag skriva för att metoden ska fungera?

Av floomer

Hjälp med Java tack.

Försöker skapa ett program som utför beräkningen 2^x, alltså 2 upphöjt till ett värde som jag ger skannern. Varje beräkning ska oxå sparas och sedan hämtas så att ej samma beräkning behöver utföras igen, det är detta som jag har problem med:

Hade verkligen uppskattat lite hjälp.

import java.util.HashMap; public class Model { HashMap<Integer,Long> memory = new HashMap<Integer,Long>(); Integer value; Long result; public long computePower(int value){ if(value <= 0 ) return 1; else{ return 2 * computePower(value-1); } } private void addValueToMemory(Integer value, Long result){ memory.put(value, result); } private Long getValueFromMemory(Integer value){ return memory.get(value); } public long compute2Power(int value){ if(value < 0) throw new IllegalArgumentException(); else if(value >= 0){ return getValueFromMemory(value); } else{ return computePower(value); } } public void clearMemory(){ memory.clear(); } }

import java.util.Scanner; public class Program { public static void main(String[] args) { Model m = new Model(); Scanner s = new Scanner(System.in); System.out.println("Add a positive number, -1 to clear or -2 to quit"); int input = 0; while(input != -2){ input = s.nextInt(); if(input == -1){ m.clearMemory(); System.out.println("Memory cleared"); } else if(input == -2){ m.clearMemory(); System.out.println("Memory cleared"); System.out.println("Program quits"); } else if(input >= 0){ System.out.println("2^n = " + m.compute2Power(input)); } else{ try{ System.out.println("Invalid input"); }catch(IllegalArgumentException e){ } } } System.exit(0); } }

Här är fellmedelandet:

Exception in thread "main" java.lang.NullPointerException
at Model.compute2Power(Model.java:32)
at Program.main(Program.java:31)

rad 32 i klassen model är: return getValueFromMemory(value);

rad 31 i main klassen Program är :System.out.println("2^n = " + m.compute2Power(input));

Även den här raden: private void addValueToMemory(Integer value, Long result){
memory.put(value, result);
är understruken med texten: The method addValueToMemory(Integer, Long) from the type Model is never used locally .