Ενώ στη Java λειτουργεί κανονικά, στο Android εμφανίζει μόνο τον έναν αριθμό απο τους 5 + τον εξτρα αριθμό απο 1-20.
Τι κάνω λάθος? (είμαι εντελώς καινούριος Android,οπότε να είστε επιεικείς)
Υ.Γ: Ο κώδικας μου είναι στη onCreateOptionsMenu(Menu menu)
public class MainActivity extends ActionBarActivity {
Button button1;
TextView display;
TextView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
button1 = (Button) findViewById(R.id.b1);
display = (TextView) findViewById(R.id.display);
show = (TextView) findViewById(R.id.show);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Random ran = new Random();
ArrayList<Integer> al = new ArrayList<Integer>();
for(int i = 1; i <= 45; i++)
al.add(i);
for(int i = 0; i < 5; i++) {
int x = al.remove(ran.nextInt(al.size()) );
display.setText(" " + x);
}
show.setText(" | "+ (ran.nextInt(20)+1));
}
});
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();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
return rootView;
}
}
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Βασικά που ακριβώς να βάλω τον κώδικα, είχα ανοιχτο το MyActivity(αντι για main) και εμφανίζεται έτσι:
package com.and.myapp;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
public class MyActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, 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();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_my, container,
false);
return rootView;
}
}
}
Εχω αυτό το βιβλίο για Android: https://www.papasotiriou.gr/product/anaptiksi-efarmogon-me-to-android αλλά όσο είδα δεν γράφει κάτι για επεξεργασία κώδικα
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Πως αρχιζω ενα προτζεκτ με τον κωδικα που εχω γραψει σε java??
Εχω εγκαταστησει το Android sdk και εχω τρεξει στη συσκευη το default προγραμμα που εμφανιζει "hello world". Ξεκιναω ως android project(eclipse εχω) αλλα μετα....
Δεν ηξερα που να αντιγραψω τον κωδικα!(αν πρεπει να το κανω αυτο)
Παρακαλω διαφωτιστε με.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Εχω μάθει while,if,switch και κάποια βασικά μεθόδων + constructor.
Θέλω να κάνω σαν κουίζ που έχει πολλαπλές απαντήσεις...
Είδα κάπου οτι για να το κάνω αυτό πρέπει να χρησιμοποιήσω arrays, είδα και γι'αυτά οπότε...ωστόσο δεν νομίζω να έκανα καλή χρήση των arrays στο πρόγραμμα που θα δείτε.
Το ΒΑΣΙΚΟ ΠΡΟΒΛΗΜΑ είναι οτι δεν μου πιάνει για σωστές τις απαντήσεις.
πχ είτε γράψω "b" είτε "Obama" (χωρις εισαγωγικα) στη πρώτη ερώτηση, δεν αυξάνεται ο μετρητης για τις σωστές απαντήσεις που έχω βάλει(correct++).
Γιατί? (ή αν έχετε εναλλακτικό τρόπο -αλλά οχι πολύ προχωρημένο- για τη καταμέτρηση των απαντήσεων)
package quizAdvanced;
import java.util.*;
public class quizAdvanced {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String[] a = new String[5];
String[] b = new String[5];
String[] c = new String[5];
int count = 0;
String answer;
int correct = 0;
int wrong = 0;
a[0] = "G. Bush Jr.";
a[1] = "Obama";
a[2] = "Lincoln";
a[3] = "Washington";
a[4] = "Papandreou";
b[0] = "Apple";
b[1] = "Motorola";
b[2] = "Lenovo";
b[3] = "Sony";
b[4] = "Google";
c[0] = "Doha";
c[1] = "Boha";
c[2] = "Al Khtor";
c[3] = "Loha";
c[4] = "Dammam";
while (count < 3) {
switch (count) {
case 0:
System.out.printf("%s\n \na) %s\nb) %s\nc) %s\nd) %s\ne) %s\n %s\n", "Who is the president of U.S.A?",
a[0],a[1],a[2],a[3],a[4], "Enter the answer: ");
answer = input.nextLine();
if (answer == "b" || answer == "Obama")
++correct;
else
++wrong;
break;
case 1:
System.out.printf("%s\n \na) %s\nb) %s\nc) %s\nd) %s\ne) %s\n %s\n", "Which company of the following created Android software?",
b[0],b[1],b[2],b[3],b[4], "Enter the answer: ");
answer = input.nextLine();
if (answer == "e" || answer == "Google")
++correct;
else
++wrong;
break;
default:
System.out.printf("%s\n \na) %s\nb) %s\nc) %s\nd) %s\ne) %s\n %s\n", "What's the capital of Qatar?",
c[0],c[1],c[2],c[3],c[4], "Enter the answer: ");
answer = input.nextLine();
if (answer == "a" || answer == "Doha")
++correct;
else
++wrong;
break;
}
++count;
}
System.out.println("Results: ");
if (correct == 3)
System.out.println("Congrats! 3 out of 3.");
else if (correct == 2)
System.out.println("Good,but you could be better.");
else
System.out.println("You failed!");
System.out.println(correct +" - " + wrong);
}
}
Όποιες προτάσεις έχετε και διορθώσεις, δεκτές!
Θα είχα περιέργεια πως γίνεται οι ερωτήσεις (αν είχα 100 ας πούμε αντι για 3) να ανακατεύονται καθώς και οι απαντήσεις! Δηλαδή σε μια ερώτηση να μην είναι η σωστή απάντηση πάντα στο b,να πηγαίνει και σε άλλη θέση.
Ευχαριστώ
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Το προγραμματάκι κάνει τα εξής 2 πράγματα:
1) Παίρνει τον 4ψήφιο κωδικό που εισάγει ο χρήστης,τον κωδικοποιεί και τον ανακατεύει και τον προβάλλει στην οθόνη.
2) Στη 2η κλάση που εισάγω ως constructor τη 1η κλασση, δεν μου παίρνει τη μέθοδο setNumber().
Θα πρέπει να εμφανίζει τον "κωδικοποιημένο" αριθμό στην αρχική μορφή που έβαλε ο χρήστης.
Οτι και να δοκιμάσω,το βγάζει λάθος...
Η κλάση με constructor:
package secret;
import java.util.*;
public class secret {
Scanner input = new Scanner(System.in);
private int number;
public secret(int theNumber)
{
theNumber = number;
}
public void setNumber(int theNumber)
{
theNumber = number;
System.out.println("Enter the number: ");
number = input.nextInt();
// Παίρνω μεμονωμένα τα ψηφία απο τον εισαγόμενο αριθμό
int ena = (number / 1000) % 10;
int duo = (number / 100) % 10;
int tria = (number / 10) % 10;
int tessera = number % 10;
// Κρυπτογράφηση και καλά!!!
int newEna = (ena + 7) % 10;
int newDuo = (duo + 7) % 10;
int newTria = (tria + 7) % 10;
int newTessera = (tessera + 7) % 10;
String teliko = newTria+""+newTessera+""+newEna+""+newDuo; // Μετατρέπω σε String
number = Integer.valueOf(teliko).intValue();
}
public int getNumber()
{
return number;
}
public void displayMessage()
{
System.out.println( getNumber() );
}
}
Η 2η κλάση που εισάγω τις μεθόδους (αλλά βγαίνει λάθος εκτος απο το getNumber() ):
package secret;
public class secreTest {
public static void main(String[] args)
{
secret mySecret = new secret();
mySecret.setNumber();
mySecret.getNumber();
// Εδώ και κάτω θα έκανα τη μετατροπή του "κωδικοποιημένου" αριθμού στον αρχικό
int a = (newEna + 3) % 10;
int b = (newDuo + 3) % 10;
int c = (newTria + 3) % 10;
int d = (newTessera + 3) % 10;
String teliko = ""+a+""+b+""+c+""+d; // Μετατρέπω σε String
int telos = Integer.valueOf(teliko).intValue(); // Μετατρέπω σε Int
System.out.println(telos);
}
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Απλά αφού προσθέσω 7 σε καθε ψηφίο και πάρω το υπόλοιπο της διαίρεσης του με το 10,
μετά δεν μπορώ να το επαναφέρω (το κάθε ψηφίο, όχι ολόκληρο τον αριθμο) στην αρχική του τιμή!
Υ.Γ: Κάνω πολύ χρήση του System.out.println για να βλέπω το αποτέλεσμα
Κώδιξ:
package secret;
import java.util.*;
public class secret {
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
int number;
System.out.println("Enter the number: ");
number = input.nextInt();
// Παίρνω μεμονωμένα τα ψηφία απο τον εισαγόμενο αριθμό
int ena = (number / 1000) % 10;
int duo = (number / 100) % 10;
int tria = (number / 10) % 10;
int tessera = number % 10;
System.out.println(ena + " " + duo + " " + tria + " " + tessera);
// Κρυπτογράφηση και καλά!!!
int newEna = (ena + 7) % 10;
int newDuo = (duo + 7) % 10;
int newTria = (tria + 7) % 10;
int newTessera = (tessera + 7) % 10;
System.out.println(newEna + " " + newDuo + " " + newTria + " " + newTessera);
// Και αλλάζω και τη σειρά
System.out.println(newTria + " " + newTessera + " " + newEna + " " + newDuo );
// Μετατρέπω σε String
String i = "" + newTria+""+newTessera+""+newEna+""+newDuo;
System.out.println(i);
// Μετατρέπω από String σε Int
int mi = Integer.valueOf(i).intValue();
System.out.println(mi);
/* Πως κάνω με κωδικοποίηση πάλι να επιστρέψει τον αρχικό
αριθμό?
* Δηλαδή κυρίως πως να επαναφέρω το κάθε ψηφίο μετά τη
μετατροπή του με το '(ena + 7) % 10'
*/
}
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Έβαλα στο τέλος της while το
if (total >= 100000000)
(εσοχή) break;
τότε μου εμφάνισε κανονικά!
Άρα δεν χρειάζεται να αλλάξω σε long τη μεταβλητή ε?
(Είχες δίκιο,πριν μου εμφανίσει τα 0 πριν,για κλάσματα δευτερολέπτου μου εμφάνιζε τους αριθμούς,αλλά τόσο γρήγορα που είναι αδύνατον να δει κάποιος καθαρά)
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
public class epi {
public static void main(String args[])
{
int count = 1;
int poso = 1;
int total;
while (count > 0)
{
total = poso * 2;
System.out.println(total);
poso = total * 2; //ή poso = poso * 2
++count;
}
}
}
Με αυτά μου εμφανίζει 0.
Δεν θα έπρεπε να αποθηκεύει τη τιμή στο "poso" μόλις το ξανα εκτελεί?
Υπόψιν,δεν έχω κάνει τον for.
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
(Σημείωση: Είδα κάπου οτι μπορώ όταν είναι διάφορο του 1 ή του 2, να βάζω τον μετρητή count να μειώνετε κατά 1 έτσι ώστε να επαναλαμβάνεται η ερώτηση για εισαγωγή)
Ωραία γλώσσα,πολύ διάβασμα !
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Το θέμα είναι ΑΝ δεν εισάγει μια απο τις 2 τιμές, πως μπορώ να κάνω να επαναλαμβάνεται η ερώτηση μέχρι να εισάγει μια απο τις δύο επιλογές? (εδω πχ το 1 ή το 2).
Σημείωση: Εχω μάθει if,else, while, τελεστές (++χ κλπ), αντικείμενα κλάσης,είμαι αρχή δηλαδή.
Απλά από το βιβλίο που διαβάζω είχε στο τέλος του κεφαλαίου μια παρόμοια άσκηση και σύμφωνα με αυτά που έχω μάθει δεν μπορώ να σκεφτώ κάτι.
Ο κώδικας:
package analysis;
import java.util.*;
public class Analysis {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int pass = 0;
int fail = 0;
int count = 0;
int result;
while (count < 10) {
System.out.println("Enter the result (pass = 1, failure = 2) : ");
result = input.nextInt();
if (result == 1)
pass += 1;
else if (result == 2)
fail += 1;
else
//τι κανω εδώ?
count += 1;
}
System.out.println("The passes are " + pass);
System.out.println("The failures are " + fail);
if (pass >= 8)
System.out.println("Congratulations!");
}
}
Ευχαριστώ!
Σημείωση: Το μήνυμα αυτό γράφτηκε 9 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Τα λέμε!
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Βασικα παταγα import package.Ena και δεν δουλευε...
Τελικα εκανα δεξι κλικ στο παραθυρο Package explorer στα αριστερα του Eclipse, μετα "Import" ---> General ---> Existing projects into Workspace.
Μετα διάλεξα το σωστό directory, και μόλις ανοιξε, έσειρα το αρχείο στο πακετο που είναι και το duo.
Τα κατάφερα δλδ,αλλά μπερδεμένο...και γιατι σε σενα να παίζει?
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
public class Ena {
public void displayMessage(String name)
{
System.out.println("Your name is: " + name);
}
}
και θέλω να την εισάγω σε άλλη που χρησιμοποιεί τη μέθοδο main:
import java.util.*;
public class Duo {
public static void main(String[] args)
{
Scanner key = new Scanner(System.in);
Ena onoma = new Ena();
System.out.println("Enter your name: ");
String yourName = key.nextLine();
onoma.displayMessage(yourName);
}
}
Το λάθος που μου βγάζει είναι αυτό:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Ena cannot be resolved to a type
Ena cannot be resolved to a type
at Duo.main(Duo.java:9)
Γιατί?? (είμαι newbie)
Σημείωση: Το μήνυμα αυτό γράφτηκε 10 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.