2017-01-12 6 views
-2

안녕하세요 저는 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 개의 다른 식으로 시도했다.

+6

최소한의 검증 가능한 예제를 제공해주십시오. 우리는 전체 코드가 필요하지 않습니다. http://stackoverflow.com/help/mcve – marstran

+0

힌트 : [mcve] 만들기에 대해 읽고 영어가 기본 언어임을 이해하십시오. 식별자 및 인쇄 문에 영어 이외의 단어를 사용하면 도움이되는 피드백을 받기가 쉽지 않습니다. 따라서 전체 프로그램을 푸는 대신 영어 단어만을 사용하여 [mcve]를 입력하십시오. 게다가 C와 Java 사이의 루핑 구조에는 많은 차이가 없습니다. – GhostCat

+0

Eclipse는 텍스트 편집기입니다. 코드가 실행되는 방식에는 아무런 차이가 없습니다. – JJJ

답변

0

예상 그것의, 당신이 준 계속 : 다음 예를 참조하십시오

while(halamannovel >= 100 && halamannovel <= 300); 

이 의미 (100) 내의 임의의 숫자 (100 포함) 및 300 (300 포함) 반복 ​​루프를 만들 것입니다. 번호 범위는 100-300입니다.

85를 입력하면 100보다 작으므로 whilefalse을 반환하고 루프가 끊어집니다.

희망이 있습니다.

+0

사실 실제로 일어난 일이지만, 나는 100-300만이 받아 들여지고 계속할 수있는 조건을 만들고 있었고, 100과 300을 넘는 것이 반복을 반복했다. 조건을 고치는 것에 대한 어떤 제안? –

+0

숫자가 100보다 작고 300보다 큰 경우 반복을 반복하려면 while 조건을 다음과 같이 변경하십시오. while (halamannovel <= 100 || halamannovel> = 300); –

+0

헤이 appleman 귀하의 답변은 해결책이 솔루션 (halamannovel <100 || halamannovel> 300)에 가까웠습니다; 고마워요. –

0

동일한 System.in 스트림에서 2 개의 Scanner 개체를 사용하고 있습니다. 대신 기존 스캐너를 다시 사용해야합니다. 그렇지 않으면 서로 간섭 할 것입니다. 당신이 당신의 종료 기준에서 85

를 입력 할 때 How to use multiple Scanner objects on System.in?