Kullanıcı Girişi keyboard.nextLine () ve String (Java) ile çalışmıyor

Geçenlerde boş zamanlarımda Java öğrenmeye başladım. Bu yüzden pratik yapmak için sıcaklık (Celsius veya Fahrenheit) alan ve tersine çeviren bir program yapıyorum. Klavye tarayıcısını zaten içe aktardım.

    int temp;
    String opposite, type;
    double product;

    System.out.print("Please enter a temperature: ");
    temp = keyboard.nextInt();

    System.out.println("Was that in Celsius or Fahrenheit?");
    System.out.print("(Enter 'C' for Celsius and 'F' for Fahrenheit) ");
    type = keyboard.nextLine();

    if (type == "C")//Only irrelevant temp conversion code left so I'm leaving it out

String ve nextLine öğelerinde yeniyim ve program sadece C veya F girdiğiniz kullanıcı girişi bölümünden atlıyor.

Teşekkürler!

1

7 cevap

Telefon etmek

  keyboard.nextLine();

Sonra

  temp = keyboard.nextInt();

Çünkü nextInt (), \ n karakterini kullanmaz.

Also, compare Strings with .equals(); not ==

if(type.equals("C"));
0
katma

Tarayıcı # nextInt 'dan sonra asla Tarayıcı # nextLine kullanmayın. Scanner # nextInt 'dan sonra enter tuşuna bastığınızda, Scanner # nextLine komutunu atlayın. Yani, Den değiştir

 int temp = keyboard.nextInt();

için

 int temp = Integer.parseInt(keyboard.nextLine());
0
katma

Kodunuz için nextLine (); öğesini next (); olarak değiştirin ve çalışacaktır.

System.out.println("Was that in Celsius or Fahrenheit?");
    System.out.print("(Enter 'C' for Celsius and 'F' for Fahrenheit) ");
    type = keyboard.next();

olanlar hakkında bir fikir edinmek için şuydu:

  • nextLine(): Advances this scanner past the current line and returns the input that was skipped.
  • next(): Finds and returns the next complete token from this scanner.

Also like the many of the answers says use equals() instead of using ==

== yalnızca nesneye yapılan referansların eşit olup olmadığını kontrol eder. .equal() dizeyi karşılaştırır.

Read more Here

0
katma

Tarayıcı Sınıfını Kullan:

int temp;
java.util.Scanner s = new java.util.Scanner(System.in);
String opposite, type;
double product;

System.out.print("Please enter a temperature: ");
temp = s.nextInt();

System.out.println("Was that in Celsius or Fahrenheit?");
System.out.print("(Enter 'C' for Celsius and 'F' for Fahrenheit) ");
type = s.nextLine();

if (type.equals("C")){
do something
}
else{
do something
}

Daha Fazla Giriş referansı için:

Tarayıcı

BufferedReader

String

Here is a wonderful comparison on how to compare strings in java.

0
katma

Ayrıca, (kod == "C") yerine yerine type.equals ("C") 'yi kullanın.

0
katma

nextLine() yerine keyboard.next() öğesini kullanabilirsiniz. ve benzeri

user1770155

İki dizgiyi karşılaştırmak için söz ettiğinizde .equals() kullanmanız gerekir. ve "C" üst harfini karşılaştırdığınızdan beri ne yapacağımı

 type = keyboard.next().toUpperCase();



if (type.equals("C"))
0
katma

.nextInt() does not read the end of line character "\n".

.nextInt() 'dan sonra bir keyboard.nextLine() koymanız gerekir ve sonra çalışacaktır.

0
katma