Member 12900746 Ответов: 1

Никакой реакции на мой сканер


Привет, ребята, после записи входной переменной в запущенную программу я не получаю никакой реакции.
Затмение говорят:
Resource leak: 'sc' is never closed


Это и есть код...

package stoneddog;

import java.util.Scanner;

public class StonedDog {

	public static int i = 0; 
	public static void addFood(int i) {
		Scanner input = new Scanner(System.in, "Windows-1250");
		Food [] objFood = new Food[20]; 
		System.out.println("Zadaj nazov jedlo, kalorie, sacharidy a bliekoviny v tomto poradi");
		String name = input.next();
		int calories = Integer.parseInt(input.next());
		int carbohyd = Integer.parseInt(input.next());
		int protein = Integer.parseInt(input.next());;
		objFood[i] = new Food(name, calories, carbohyd, protein); 
	}
		
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in, "Windows-1250");
		System.out.println("Chces pridat jedlo y/n");
		String yeasNo = sc.next();
		if(yeasNo == "y"){
			addFood(i);
		}
		
		if(yeasNo == "n" ){
			System.out.println("Nothing");
		}

	}

}


package stoneddog;

public class Food {
	private int calories; 
	private int carbohyd; 
	private int protein; 
	private String name; 
	
	public Food (String name, int calories, int carbohyd, int protein){
		this.name = name; 
		this.calories = calories; 
		this.carbohyd = carbohyd;
		this.protein = protein; 
	}
}


Что я уже пробовал:

Я попробовал изменить имя сканера и настроить if (). Ничего не помогало.

1 Ответов

Рейтинг:
1

Richard MacCutchan

Вы сравниваете входную строку (которая содержит символ новой строки) с одним символом, поэтому оба ваших оператора if потерпят неудачу. Вы должны сделать что-то вроде:

String yeasNo = sc.next();
if(yeasNo.substring(0,1).equals("y")) {
    addFood(i);
}
else if(yeasNo.substring(0,1).equals("n")) {
    System.out.println("Nothing");
}
else {
    System.out.println("Bad input");
}

Тем не менее, у вас все еще есть проблема, что после вызова addFood ваша программа завершится. И даже если вы это исправите, каждый раз, когда вы звоните addFood он создает новый массив Food объекты, но затем, когда метод возвращает этот массив, он удаляется, так что он больше не существует.

Вам, очевидно, нужно больше изучать Java, и я рекомендую потратить время на это Учебные Пособия По Java™ [^].