Kutilgan nuqtada dastur to'xtatilmaydi (string olish uchun)

import java.util.Scanner;

public class Power1Eng {

    public static void main(String[] args) {

        double x, prod = 1;
        int n;
        String s;

        Scanner input = new Scanner(System.in);

        System.out.print("This program prints x(x is a real number) raised to the power of n(n is an integer).\n");

        outer_loop:
        while (true) {
            System.out.print("Input x and n: ");
            x = input.nextDouble();
            n = input.nextInt();

            for (int i = 1; i <= n; i++) {
                prod *= x;
            }

            System.out.printf("%.1f raised to the power of %d is %.4f. Do you want to continue?(Y/N) ", x, n, prod);
            s = input.nextLine();

            if (s.equals("Y"))
                continue;
            else if (s.equals("N"))
                break;
            else {
                inner_loop:
                while (true) {
                    System.out.print("Wrong input. Do you want to continue?(Y/N) ");
                    s = input.nextLine();

                    if (s.equals("Y"))
                        continue outer_loop;
                    else if (s.equals("N"))
                        break outer_loop;
                    else
                        continue inner_loop;
                }   
            }   
        }       
    }

}

enter image description here

Konsolga qarang. Uchinchi qatorda men dasturni "Siz davom etmoqchimisiz? (E/H)" ga qadar bosib chiqarishni kutgan edim, lekin u ham "noto'g'ri kiritish" yozishni boshlaydi. Davom etishni xohlaysizmi (E/H). Ushbu muammoni qanday hal qilishim mumkin?

0
Marhamat qilib, iltimos, ushbu davomi va break belgilarini olib tashlash uchun iltimos olib tashlang! Ushbu java ekvivalenti goto hech qachon kerak emas
qo'shib qo'ydi muallif James Webster, manba
NCode Men kodni yomon deb qabul qilaman, chunki faqat bir hafta oldin Java-ni o'rganishga kirishdim!
qo'shib qo'ydi muallif schizoid322, manba
Sizning java juda juda yomon uslubga ega. Teglar va o'tish tugmalaridan foydalanmasligingiz kerak, ular kodni o'qilmaydi. Kodlash konventsiyalarini o'qishingiz kerak: oracle.com/technetwork/java/codeconv-138413 .html
qo'shib qo'ydi muallif NCode, manba

2 javoblar

nextInt va nextDouble ni qilsangiz, u (bo'sh) chiziqning qolganini tozalaydi.

Ushbu qiymatlarni o'qib chiqib, qolgan qatorni tozalash uchun nextLine deb chaqirishingiz kerak.

1
qo'shib qo'ydi
System.out.printf("%.1f raised to the power of %d is %.4f. Do you want to continue?(Y/N) \n", x, n, prod);
s = input.next();

Bu sizning muammoingizni hal qiladi va shuningdek, teglardan foydalanmaydi.

Java Label Statementsdan foydalanishdan qochishim kerakmi?

Ushbu kodni saqlab qolish uchun sizni topasiz.

0
qo'shib qo'ydi