簡體   English   中英

C++“按任意鍵繼續”問題

[英]C++ "Press any key to continue" Issue

我的問題是關於我寫的一個小 C++ 程序(有點類似於 Zork)。我對編碼很陌生,所以如果我的問題沒有任何意義,請不要怪我。這是代碼:

 #include <iostream>
using namespace std;
int main()
{
    cout << "Du befindest dich in einem dunklem Wald,um dich herum ist es dunkel.\n Vor dir liegt eine Fakel.\n Gebe 1 und Enter ein um die Fakel an dich zu nehmen \n oder 2 und Enter um sie in Ruhe zu lassen \n" ;
    int Entscheidung;
    cin>> Entscheidung;
    switch (Entscheidung) {
    case 1:
    cout <<"Du zündest die Fakel an,deine Umgeben ist nun sichtbar \n";
    break;
    case 2:
        cout <<"Du lässt die Fakel liegen,um dich herum bleibt es Dunkel \n";
        break;
        }
        if (Entscheidung==1) {
            cout << "Vor dir steht ein Elf,er scheint friedlich \n Gebe 1 ein um ihn anzusprechen oder 2 um ihn Anzugreifen \n";
        }
        if(Entscheidung==2){
            cout<< "Du hörst Schritte im dunkeln. \n Gebe 1 ein um die Fakel zu nehmen und den Geräuschen auf den Grund zu gehen \n oder 2 um dich von den Geräuschen weg zu bewegen \n";
            }
        int Entscheidung2;
        switch (Entscheidung2) {
        case 1:
        cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
        break;
         }
    return 0;
}

我的問題是,如果我運行程序,我只能輸入一個變量,然后按任意鍵繼續出現,從那時起,我無法輸入任何新內容,因為它剛剛關閉。希望有人可以幫助我。 提前謝謝

PS:我使用 Code::Blocks 作為 IDE 和編譯器

您的邏輯沒問題,但您忘記讀取變量Entscheidung2

問題是您確實聲明了變量Entscheidung2但從未初始化/讀取,因此條件

switch (Entscheidung2) {
        case 1:
            cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
            break;
     }

從未被處決...

快速解決:

添加cin>> Entscheidung2; 例如,在變量聲明之后。

一切都會好起來的:


 int Entscheidung2; switch (Entscheidung2) {

這是未定義的行為 Entscheidung2既未初始化也未設置; 你不能試圖讀取它的值,但這就是你在switch語句中所做的。

使用足夠高的警告級別,您可以讓編譯器檢測到此類錯誤。 此類警告的示例:

warning: 'Entscheidung2' is used uninitialized in this function

warning C4700: uninitialized local variable 'Entscheidung2' used

顯然,目的是在使用它之前將一個值讀入Entscheidung2

    int Entscheidung2;
    cin >> Entscheidung2;
    switch (Entscheidung2) {

這將刪除未定義的行為並匹配假設的意圖。

出現按任意鍵繼續

這與您的程序無關。 這是來自運行程序的環境的消息。

我使用 Code::Blocks 作為 IDE 和編譯器

不。“Code::Blocks”不是編譯器。

並且請不要使用非英語標識符。 對於不會說德語的人來說,“Entscheidung”讀起來就像是一個完全隨機的字符系列,發布帶有無法辨認的標識符的代碼是不友好的。

首先,您甚至不需要 if 函數。 使用 case 進行比較就足夠了。 否則,您會將變量與 1 和 2 進行兩次比較,這是沒有意義的。 然后,您還應該使用cin從控制台獲取輸入,這在下面的答案中已經提到。

 #include <iostream>
using namespace std;
 int main()
{
    cout << "Du befindest dich in einem dunklem Wald,um dich herum ises dunkel.\n Vor dir liegt eine Fakel.\n Gebe 1 und Enter ein um die Fakel an dich zu nehmen \n oder 2 und Enter um sie in Ruhe zu lassen \n" ;
int Entscheidung;
cin>> Entscheidung;
switch (Entscheidung) {
case 1:
cout <<"Du zündest die Fakel an,deine Umgeben ist nun sichtbar \n";
cout << "Vor dir steht ein Elf,er scheint friedlich \n Gebe 1 ein um ihn anzusprechen oder 2 um ihn Anzugreifen \n";

break;
case 2:
    cout <<"Du lässt die Fakel liegen,um dich herum bleibt es Dunkel \n";
   cout<< "Du hörst Schritte im dunkeln. \n Gebe 1 ein um die Fakel zu nehmen und den Geräuschen auf den Grund zu gehen \n oder 2 um dich von den Geräuschen weg zu bewegen \n";
    break;
    }

    int Entscheidung2;
    cin>>Entscheidung2;
    switch (Entscheidung2) {
    case 1:
    cout <<"Du redest mit dem Elfen.Er versucht dich anzugreifen \n";
    break;
     }
return 0;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM