안녕하세요 저는 C의 최근 발동기이므로 자바에 대한 깊은 지식이 없습니다. 내 문제는 콘솔을 실행할 때 상황이 작동하지 않는 것처럼 보이지만 작동하지 않는 것 같아요. 추가 정보로 Eclipse IDE를 사용합니다.do {} while(); 예상대로 작동하지 않는 것 같습니다
전체 코드는 :
public class kahfi {
static int choice;
static String judul = null ;
static String judulterbit;
static String penulis;
static String jenisbuku;
static String genre;
static int halamannovel ;
static int halamancerpen ;
static int harganovel;
static int hargacerpen;
static int pendapatannovel;
static int pendapatancerpen;
public static void pilihan1(){
Scanner scanmenu2 = new Scanner(System.in);
System.out.println("Judul:");
judul = scanmenu2.next();
System.out.println("Penulis:[nama mohon disambungkan jika panjang dan terpisah]");
penulis = scanmenu2.next();
System.out.println("novel/cerpen? ");
jenisbuku = scanmenu2.next();
if(jenisbuku.equals("novel")){
do{
System.out.println("jumlah halaman novel[100-300] :");
halamannovel = scanmenu2.nextInt();
}while(halamannovel >= 100 && halamannovel <= 300);
System.out.println("Pilih genre [fiksi,nonfiksi,humor ,dll]: ");
genre = scanmenu2.next();
System.out.println("data telah tersimpan");
System.out.println("=========================");
}else if(jenisbuku.equals("cerpen")){
do{
System.out.println("jumlah halaman cerpen[5-30] :");
halamancerpen = scanmenu2.nextInt();
}while(halamancerpen >= 5 && halamancerpen <= 30);
System.out.println("Pilih genre [fiksi,nonfiksi,humor ,dll]: ");
genre = scanmenu2.next();
System.out.println("data telah tersimpan");
System.out.println("=========================");
}else{
System.out.println("=========================");
System.out.println("salah input ");
System.out.println("=========================");
}
}
public static void pilihan2(){
System.out.println("Buku yang belum terbit :");
System.out.println(judul);
System.out.println("=========================");
harganovel = halamannovel * 500;
hargacerpen = halamancerpen * 200;
System.out.println("harga novel "+(harganovel));
System.out.println("harga cerpen "+(hargacerpen));
System.out.println("=========================");
}
public static void pilihan3(){
judulterbit = new String(judul);
System.out.println("=========================");
System.out.println("uang yang di dapatkan : ");
Random randomno = new Random();
pendapatannovel = randomno.nextInt(100000) * halamannovel;
pendapatancerpen = randomno.nextInt(100000) * halamancerpen;
System.out.println("pendapatan novel : +" + pendapatannovel);
System.out.println("pendapatan cerpen : +" + pendapatancerpen);
System.out.println("=========================");
}
public static void pilihan4(){
System.out.println("=========================");
System.out.println("buku yang sudah terbit :\n"+(judulterbit));
System.out.println("=========================");
}
public static void main(String[] args) {
do{
System.out.println("Menu\n====");
System.out.println("1.Menulis buku \n2.Melihat daftar buku yang belum terbit\n3.Menerbitkan buku\n4.Melihat daftar buku yang sudah diterbitkan\n5.Exit.");
System.out.println("pilihan anda : ");
Scanner scanmenu = new Scanner(System.in);
choice = scanmenu.nextInt();
switch(choice) {
case 1 :
pilihan1();
break;
case 2 :
pilihan2();
break;
case 3 :
pilihan3();
break;
case 4 :
pilihan4();
break;
case 5 :
System.exit(0);
break;
}
}while(choice!=5);
}
}
문제는이 측면에있을 것으로 보인다. Iam은 조건이 옳다는 것을 확신하지만, halamannovel에서 "85"를 입력하면 반복하는 대신 계속 입력하고 100을 반복하면 반복됩니다. 나는 조건을 바꾸려고 노력했지만 악화되었다. 이것은 또한 할람펜에 적용된다.
do{
System.out.println("jumlah halaman novel[100-300] :");
halamannovel = scanmenu2.nextInt();
}while(halamannovel >= 100 && halamannovel <= 300);
System.out.println("Pilih genre [fiksi,nonfiksi,humor ,dll]: ");
genre = scanmenu2.next();
System.out.println("data telah tersimpan");
System.out.println("=========================");
}else if(jenisbuku.equals("cerpen")){
do{
System.out.println("jumlah halaman cerpen[5-30] :");
halamancerpen = scanmenu2.nextInt();
}while(halamancerpen >= 5 && halamancerpen <= 30);
어떤 제안이나 해결책이 생명의 은인이 될 수 있습니다. 시간 내 주셔서 감사합니다!
나는 3 개의 다른 식으로 시도했다.
최소한의 검증 가능한 예제를 제공해주십시오. 우리는 전체 코드가 필요하지 않습니다. http://stackoverflow.com/help/mcve – marstran
힌트 : [mcve] 만들기에 대해 읽고 영어가 기본 언어임을 이해하십시오. 식별자 및 인쇄 문에 영어 이외의 단어를 사용하면 도움이되는 피드백을 받기가 쉽지 않습니다. 따라서 전체 프로그램을 푸는 대신 영어 단어만을 사용하여 [mcve]를 입력하십시오. 게다가 C와 Java 사이의 루핑 구조에는 많은 차이가 없습니다. – GhostCat
Eclipse는 텍스트 편집기입니다. 코드가 실행되는 방식에는 아무런 차이가 없습니다. – JJJ