Voisiko joku neuvoa. Olen yrittänyt tätä jo pitkään itekseni. Miten saan tähän tehtävään loput x-rivit. Olen ihan pihalla. Mitä teen väärin?
Tehtävän poitäisi tulostaa näin:
Anna ruudukon korkeus: 7
Anna ruudukon leveys: -2
Virheellinen leveyden tai korkeuden arvo!
Anna ruudukon korkeus: 5
Anna ruudukon leveys: 8
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
Saan kaiken muun paitsi 4 vimosta x-riviä. Koodini:
import java.util.Scanner;
public class Silmukat {
static void tahdet(int lkm)
{
// toistolauseen jokaisella kierroksella tulostetaan yksi tähti
for (int i = 0; i < lkm; i ) {
System.out.print('x');
}
}
public static void main(String[] args)
{
// luetaan suorakulmion korkeus ja leveys
int luku;
int korkeus ;
int leveys ;
Scanner nappaimisto;
nappaimisto= new Scanner(System.in);
System.out.print("Anna ruudukon korkeus: ");
luku = nappaimisto.nextInt();
System.out.print("Anna ruudukon leveys: ");
luku = nappaimisto.nextInt();
while (luku < 1 )
{
System.out.println ("Virheellinen leveyden tai korkeuden arvo!");
System.out.print ("Anna ruudukon korkeus: ");
luku = nappaimisto.nextInt();
System.out.print("Anna ruudukon leveys: ");
luku = nappaimisto.nextInt();
System.out.println();
}
for (int i = 0; i < luku; i ) {
System.out.print('x');
}
}
}
Tehtävän poitäisi tulostaa näin:
Anna ruudukon korkeus: 7
Anna ruudukon leveys: -2
Virheellinen leveyden tai korkeuden arvo!
Anna ruudukon korkeus: 5
Anna ruudukon leveys: 8
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
Saan kaiken muun paitsi 4 vimosta x-riviä. Koodini:
import java.util.Scanner;
public class Silmukat {
static void tahdet(int lkm)
{
// toistolauseen jokaisella kierroksella tulostetaan yksi tähti
for (int i = 0; i < lkm; i ) {
System.out.print('x');
}
}
public static void main(String[] args)
{
// luetaan suorakulmion korkeus ja leveys
int luku;
int korkeus ;
int leveys ;
Scanner nappaimisto;
nappaimisto= new Scanner(System.in);
System.out.print("Anna ruudukon korkeus: ");
luku = nappaimisto.nextInt();
System.out.print("Anna ruudukon leveys: ");
luku = nappaimisto.nextInt();
while (luku < 1 )
{
System.out.println ("Virheellinen leveyden tai korkeuden arvo!");
System.out.print ("Anna ruudukon korkeus: ");
luku = nappaimisto.nextInt();
System.out.print("Anna ruudukon leveys: ");
luku = nappaimisto.nextInt();
System.out.println();
}
for (int i = 0; i < luku; i ) {
System.out.print('x');
}
}
}
Vastaukset 3
Vanhimmat
Alla toimiva versio, jota muutin vähän muiltakin osin. Virhe liittyi kuitekin siihen ettei ohjelma käyttänyt tahdet metodia mitenkään, eikä myöskään leveys ja korkeus muuttujia.
--- KOODI ALKAA ---
import java.util.Scanner;
public class Silmukat {
static void tahdet(int lkm) {
for (int i = 0; i < lkm; i )
System.out.print('x');
System.out.println();
}
public static void main(String[] args) {
Scanner nappaimisto = new Scanner(System.in);
int korkeus = 1;
int leveys = 1;
do {
if ((korkeus < 1) || (leveys < 1))
System.out.println ("Virheellinen leveyden tai korkeuden arvo!");
System.out.print("Anna ruudukon korkeus: ");
korkeus = nappaimisto.nextInt();
System.out.print("Anna ruudukon leveys: ");
leveys = nappaimisto.nextInt();
} while((korkeus < 1) || (leveys < 1));
for (int i = 0; i < korkeus; i )
tahdet(leveys);
}
}
--- KOODI LOPPUU ---
Kiitti. Kun ei vielä oikeen osaa niin menee ihme virheisiin aikaa. Kuitenkin haluaa ite niin pitkälle yrittää kuin kykenee. Ehkä tästä alkaa hahmottumaan.
Moro!
Tossa muuten toimiva mutta virheentarkastus puuttuu
nollalta ja negatiivisilta luvuilta:
import java.util.Scanner;
public class Silmukat {
static void tahdet(int lkm)
{
// toistolauseen jokaisella kierroksella tulostetaan yksi tähti
for (int i = 0; i < lkm; i ) {
System.out.print('x');
}
}
public static void main(String[] args)
{
// luetaan suorakulmion korkeus ja leveys
int luku;
int korkeus = 0 ;
int leveys = 0 ;
Scanner nappaimisto;
nappaimisto= new Scanner(System.in);
System.out.print("Anna ruudukon korkeus: ");
korkeus = nappaimisto.nextInt();
System.out.print("Anna ruudukon leveys: ");
leveys = nappaimisto.nextInt();
/* while ((korkeus < 1 || leveys