2014-11-18 3 views
-2

Я работаю над проектом, чтобы найти корни и дискриминанты из введенного квадратного уравнения в стандартной форме. Я попал в блокпост, пытаясь вытащить коэффициенты из уравнения. Я думаю, что я все установил расположение коэффициентов (A, B, C), но мне не удается получить фактические цифры из ввода пользователя. (Последний блок кода предназначен для CoeffA int, который я пытаюсь найти. Я ушел из CoeffB и CoeffC, чтобы сэкономить место здесь.) Любая помощь или советы по очистке моего кода и извлечению коэффициента из пользовательского ввода будет много оценили. У меня были проблемы со струнами. БлагодаряПоиск переменных из строки

import java.math.*; 
import java.util.Scanner; 

public class QuadProject2{ 
    public static void main(String[] args){ 
    Scanner sc = new Scanner(System.in); 
     int CoeffA=0; 
     int CoeffB=0; 
     int CoeffC=0; 
     double root1; 
     double root2; 
     double disc; 
     double root1new; 
     double root2new; 
     final String SENTINEL = "quit"; 
     do{ 
      System.out.println("Enter a quadratic equation in standard form"); 
      String quad=sc.nextLine(); 
     if(quad.equals("quit")){ 
      break; 
     } 
     while (!quad.equals((SENTINEL))); 

     if(quad != "quit" || quad == "0"){ 
      **int pos = quad.indexOf("x"); 
      int pos2 = quad.indexOf("x", pos); 
      int pos3 = quad.indexOf("="); 
      //This should extract the a,b,and c coefficients from the user entry 
      *int CoeffA=(0,pos);* 
      if(CoeffA>0){ 
       double a=Double.parseDouble(CoeffA); 
      } 
      if(CoeffA==0){ 
       return int 1; 
      } 
      if(CoeffA<0){ 
       return int -1; 
      }**** 
+3

Ничего общего с вашим вопросом, но вы использовали 'equals' правильно, когда сравнивали' quad' пару раз, но затем проскальзывали и использовали 'quad! =" бросить курить "'. – ajb

+0

Я предлагаю вам Google для «учебника по регулярному выражению java» и прочитайте об этом. Это проблема, которую вы не можете решить с помощью 'indexOf'. Регулярные выражения облегчат вашу работу. В противном случае вам нужно будет написать цикл, который использует 'charAt', чтобы посмотреть на каждый символ и посмотреть, является ли это цифрой или какой-либо другой частью числа. То, что вы пытаетесь сделать здесь, является довольно сложной задачей для нового программиста. – ajb

+0

Кроме того, поскольку единственный способ избежать 'do/while()' состоит в том, чтобы сделать 'quad.equals (« quit »)', 'if()', который следует, в основном 'if (false || quad == 0) ', который можно упростить до' if (quad == 0) '. – hfontanez

ответ

0

На мой взгляд:

System.out.println("Enter a quadratic equation in standard form"); 
String quad=sc.nextLine(); 

Было бы намного лучше, так как:

System.out.print("Enter a quadratic equation coefficients (separated by spaces): "); 
double a=sc.nextDouble(); 
double b=sc.nextDouble(); 
double c=sc.nextDouble(); 

Таким образом, вам не нужно преобразовать строку ввода в число. Все это сделано для вас. Если вы хотите петли, это нормально. Однако, прежде чем пытаться выполнить цикл, убедитесь, что он работает для одной итерации. Убедитесь, что вы добавили достаточную обработку нечисловых значений и т. Д.

Смежные вопросы