Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Apua aloittelijalle

Sivun loppuun

Dareon [29.01.2006 14:29:51]

#

Heipä hei,

Olen tekemässä harjoitustyötä kouluun ja kyselisin vähän neuvoja ohjelmaani varten. Tehtävä olisi muuntaa käyttäjän antama lukujono kirjaimiksi. (Esim. Käyttäjä antaa 2000 ja ohjelma muuntaa ja tulostaa sen muodossa kaksi nolla nolla nolla.) Olen tähän mennessä saanut aikaan ohjelman, joka tulostaa käyttäjän antaman rivin identtisesti, mutta nyt olisi sitten tarkoitus muokata sitä edellä mainitsemallani tavalla. Osaisikohan joku auttaa?

import java.util.Scanner;

public class Harjoitus {

	public static void main(String[] args)
{
boolean jatketaan = true;
Scanner sc = new Scanner(System.in);
while (jatketaan)
{
	System.out.println("Anna rivi:");
	String rivi = sc.nextLine() . trim();
	jatketaan = (rivi != null && !rivi.equals(""));
	if (jatketaan)
{
		System.out.println("Kaiku vastaa: " + annaVastaus(rivi));
	}
}
}

public static String annaVastaus(String s)
{
	return s;
}
}

Kiitoksia avusta jo etukäteen!

Sami [29.01.2006 15:14:09]

#

String-taulukon käyttö voisi auttaa tässä aika hyvin.

String[] luvut = new String[10];

Asetat vaan oikeat arvot tähän taulukkoon, niin sitten voit helposti hakea siitä numeroa vastaavan merkkijonon (esim. luvut[3] olisi "kolme").

Toinen mahdollinen, joskin mielestäni epäkäytännöllisempi, tapa olisi switch-case-rakenteen käyttäminen:

switch (numero) {
  case 0:
    return "nolla";

  case 1:
    return "yksi";
  //jne...
}

jassi [03.02.2006 22:43:17]

#

ei liity tähän mitenkään mutta aika hauska metodi tuo annaVastaus() :S

Juuso [03.02.2006 22:51:22]

#

jassi kirjoitti:

ei liity tähän mitenkään mutta aika hauska metodi tuo annaVastaus() :S

annaVastaus()-metodi on hyvä esimerkki siitä, mitä modulaarinen ohjelmointi pohjimmiltaan on. Jokaisesta, hyvin yksinkertaisestakin toiminnosta tehdään metodi.

Tuohon aloitusviestiin vielä. Tehtävänannon lähdekoodi on täsmälleen samanlainen kuin omassa harjoitustyössäni, joka oli muuten sisällöltään aivan erilainen. En tiedä missä koulussa olet, tai mihin teet tuota harjoitustyötä mutta ohjeissahan luki että koodin on oltava täysin omaa ja ratkaisusta saa keskustella kavereiden kanssa vain periaattellisella tasolla. Eli toisin sanoen, nettifoorumilta pyydetty apu jossa vastataan näyttämällä lähdekoodia on sääntörike, joka saattaa aiheuttaa harjoitustyön hylkäämisen ja kenties koko kurssin hylkäyksen.

Zach [04.02.2006 18:22:14]

#

Vaikuttaa tuo ensimmäinen koodinpätkä jotenkin tutulta...Taidat olla Turun avoimen yo:n ohjelmointikursseilla ;D

Juuso [05.02.2006 16:05:04]

#

Tuo sama koodinpätkä on käytössä on myös tietojenkäsittelytieteen koulutusohjelman Rakenteinen ohjelmointi -kurssin harkassa.

juhaz [07.02.2006 15:26:25]

#

Joku hauska opas, jossa neuvotaan, että mitä pitää ladata, mitä asentaa, miten asennetaan jne... voisi olla hyvä. Ohjelmointiputkasta ei tunnu löytyvän vielä mitään java opasta.

Itsellä alkoi koulussa juuri java-ohjelmointi ja olisi mukava päästä kotonakin vähän tekemään, mutta se ei oikein onnistu, kun ei tiedä, että mitä pitäisi asentaa, että java-ohjelmia voisi kääntää samalla tavalla kuin koulussakin "javac ohjelma.java", "java ohjelma.class" jne...

Blaze [07.02.2006 16:45:45]

#

Eipä siihen muuta tarvi kuin JDK:n, löytyy jostainpäin java.sun.comia.

juhaz [07.02.2006 20:01:54]

#

Minä yritin asentaa sieltä etusivulta löytyvän linkin takaa tuon: http://java.sun.com/j2ee/1.4/download.html

Mutta se asenti vain jonkun ihme serverin eikä sitten kuitenkaan ollut mitään keinoa kääntää java-ohjelmia suoritettaviksi.

Draiz [07.02.2006 20:10:18]

#

juhaz kirjoitti:

Minä yritin asentaa sieltä etusivulta löytyvän linkin takaa tuon: http://java.sun.com/j2ee/1.4/download.html

Mutta se asenti vain jonkun ihme serverin eikä sitten kuitenkaan ollut mitään keinoa kääntää java-ohjelmia suoritettaviksi.

http://java.sun.com/j2se/

Juice [07.02.2006 20:25:40]

#

Taitaa olla yleensäkin helpompaa ladata se Netbeans + JDK-paketti: http://java.sun.com/j2se/1.5.0/download.jsp

juhaz [09.02.2006 23:12:52]

#

Miten javassa voi tyhjentää komentokehoiteen ja kuinka javassa saa vaikka esimerkiksi jonkun 10 sekuntin pituisen tauon ennenkuin se jatkaa ohjelman toimintaa? Tai kuinka ohjelman saa suorittamaan samassa ikkunassa jonkun komennon?

Sami [10.02.2006 01:35:27]

#

Taukoja saa tehtyä Thread.sleep(long aikamillisekunteina); ja komentojen suorittamisen pitäisi onnistua System.getRuntime().exec("komento");
Lisää tietoa http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runtime.html ja http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html

juhaz [11.02.2006 05:12:42]

#

Sami kirjoitti:

Taukoja saa tehtyä Thread.sleep(long aikamillisekunteina); ja komentojen suorittamisen pitäisi onnistua System.getRuntime().exec("komento");
Lisää tietoa http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runtime.html ja http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html

Öö.. voitko neuvoa vähän tarkemmin? Itse koitin säätää tuota exec("komento") hommelia, mutta se ei toiminut. Tarvitsisiko siinä olla joku import.java.jokin.*; alussa ja/vai miten sitä siis käytetään oikeaoppisesti?

FooBat [11.02.2006 12:40:30]

#

Itse asiassa cls-komennon kutsuminen tyyliin

Runtime.getRuntime().exec("cls");

ei tuota haluttua tulosta. Ensisijainen syy on se, että cls on windowsin komentotulkin osa eikä erillinen käynnistettävä ohjelma. Toiseksi, tuolla tavalla käynnistetty ohjelma luo erillisen komentokehotteen eikä vaikuta siihen ikkunaan, josta käynnistit java-ohjelman.

Yhteensopivin ratkaisu tähän ongelmaan on tulostaa joukko rivinvaihtoja, jolloin teksti katoaa ruudusta.

Ainoa toimiva ratkaisu on tehdä ruudun tyhjennys-metodi C:llä ja sitten kutsua sitä natiivisti java-ohjelman sisältä.

Esim.

***CLS.java

public class CLS {

  native static void cls();

  static {
    System.loadLibrary("clslib");
  }

  public static void main(String[] args) {
   System.out.print("Ei toimi.....");
   cls();
   System.out.println("Hello World");
  }
}
javac CLS.java
javah -jni CLS
# -> CLS.h
***cls.c
#include "CLS.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_CLS_cls(JNIEnv * a, jclass b) {

  system("cls");
}
cl -IC:\j2sdk1.4.2_05\include -IC:\j2sdk1.4.2_05\include\win32 -LD cls.c -Feclslib.dll

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta